i-tech-shared-components 1.2.4 → 1.2.6
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.
|
@@ -79,6 +79,9 @@ export class NewSidebarComponent {
|
|
|
79
79
|
if (this.platform === system.id) {
|
|
80
80
|
system.checked = true;
|
|
81
81
|
}
|
|
82
|
+
if (system.id === CompaniesEnum.BROKERAGE) {
|
|
83
|
+
system.name = 'Loadboard';
|
|
84
|
+
}
|
|
82
85
|
if (this.userData.systemRoles?.find((role) => role.system === system.id)) {
|
|
83
86
|
this.activeAndInactivePlatforms['active'].push(system);
|
|
84
87
|
}
|
|
@@ -204,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
204
207
|
}], userData: [{
|
|
205
208
|
type: Input
|
|
206
209
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL25ldy1zaWRlYmFyL25ldy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9uZXctc2lkZWJhci9uZXctc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUVMLGFBQWEsRUFHZCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQWN6RCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGFBQWE7UUFDWCxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQXNC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QU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLG1CQUFtQixHQUFHLENBQUMsV0FBVyxjQUFjLFNBQVMsRUFBRSxDQUFDO1lBQ3JHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDakQsQ0FBQzsrR0FyTVUsbUJBQW1CO21HQUFuQixtQkFBbUIsZ1lDNUJoQyw4bk9BOEpBLHN1TEQxSVksSUFBSSw2RkFBRSxLQUFLLGtIQUFFLGVBQWUsNEZBQUUsT0FBTywwUUFDN0MsYUFBYSx5ZUFBRSxxQkFBcUIsZ0hBQUUsYUFBYSw2Q0FBRSxTQUFTLDZDQUM5RCxlQUFlOzs0RkFNTixtQkFBbUI7a0JBVi9CLFNBQVM7K0JBQ0UsZ0JBQWdCLFdBQ2pCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU87d0JBQ3RELGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsU0FBUzt3QkFDOUQsZUFBZTtxQkFDaEIsY0FDVyxJQUFJO29HQU1oQixhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCO2dCQUl6QixhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csNkJBQTZCO3NCQUF0QyxNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIFNsaWNlUGlwZSwgVXBwZXJDYXNlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBBdXRoSW50ZXJmYWNlLFxuICBDb21wYW5pZXNFbnVtLFxuICBPcmdhbml6YXRpb25JbnRlcmZhY2UsXG4gIFN5c3RlbVJvbGVJbnRlcmZhY2Vcbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvYXV0aC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBDb21wYW55SW1hZ2VDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wYW55LWltYWdlL2NvbXBhbnktaW1hZ2UuY29tcG9uZW50XCI7XG5cbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uTGlua3MgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9uYXZpZ2F0aW9uLWxpbmsuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1zaWRlYmFyJyxcbiAgaW1wb3J0czogW05nSWYsIE5nRm9yLCBUcmFuc2xhdGVNb2R1bGUsIE1hdE1lbnUsIE1hdEljb24sXG4gICAgTWF0TWVudU1vZHVsZSwgQ29tcGFueUltYWdlQ29tcG9uZW50LCBVcHBlckNhc2VQaXBlLCBTbGljZVBpcGUsXG4gICAgTWF0UmlwcGxlTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXctc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9uZXctc2lkZWJhci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgTmV3U2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnKVxuICBjYW5EZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdTaWRlYmFyQ29sbGFwc2VkJywgYCR7dGhpcy5pc0NvbGxhcHNlZH1gKVxuICB9XG4gIEBPdXRwdXQoKSBjb2xsYXBzZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgc2lnbk91dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbmV3QXV0aGVudGljYXRlZFJlc3BvbnNlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dGhJbnRlcmZhY2U+KCk7XG4gIEBJbnB1dCgpIHBsYXRmb3JtITogQ29tcGFuaWVzRW51bTtcbiAgQElucHV0KCkgbmF2aWdhdGlvbkxpbmtzITogQXJyYXk8TmF2aWdhdGlvbkxpbmtzPjtcbiAgQElucHV0KCkgZW52ITogYW55O1xuICBASW5wdXQoKSB1c2VyRGF0YSE6IEF1dGhJbnRlcmZhY2U7XG4gIGlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIGFjdGl2ZVBhZ2UhOiBzdHJpbmc7XG4gIHNlY29uZExheWVyQWN0aXZlUGFnZSE6IHN0cmluZztcbiAgc2Vjb25kTGF5ZXJPcGVuZWQgPSBmYWxzZTtcbiAgc2Vjb25kTGF5ZXJMaW5rczogQXJyYXk8TmF2aWdhdGlvbkxpbmtzPiA9IFtdO1xuICBjdXJyZW50Q29tcGFueSE6T3JnYW5pemF0aW9uSW50ZXJmYWNlO1xuICBhbGxPcmdhbml6YXRpb25zOiBBcnJheTxPcmdhbml6YXRpb25JbnRlcmZhY2U+ID0gW107XG4gIGFjdGl2ZUFuZEluYWN0aXZlUGxhdGZvcm1zOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7aWQ6IENvbXBhbmllc0VudW0sIG5hbWU6IHN0cmluZywgY2hlY2tlZD86IGJvb2xlYW59Pj4gPSB7XG4gICAgYWN0aXZlOiBbXSxcbiAgICBpbmFjdGl2ZTogW11cbiAgfVxuICBDb21wYW5pZXNFbnVtID0gQ29tcGFuaWVzRW51bVxuICBhY2Nlc3NUb05ld09yZ2FuaXphdGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0QWN0aXZlUGFnZSgpO1xuICAgIHRoaXMuZGV0ZWN0QWN0aXZlQW5kSW5hY3RpdmVBcHBzKCk7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdTaWRlYmFyQ29sbGFwc2VkJykgPT09ICd0cnVlJyB8fCBmYWxzZTtcbiAgICB0aGlzLmNvbGxhcHNlRXZlbnQuZW1pdCh0aGlzLmlzQ29sbGFwc2VkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0QWxsQ29tcGFuaWVzKCk7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMuZGV0ZWN0QWN0aXZlUGFnZSgpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvcGVuUGxhdGZvcm0oc3lzdGVtOiBDb21wYW5pZXNFbnVtKTogdm9pZCB7XG4gICAgaWYgKHN5c3RlbSA9PT0gdGhpcy5wbGF0Zm9ybSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB1cmw7XG4gICAgaWYgKHN5c3RlbSA9PT0gQ29tcGFuaWVzRW51bS5UMykge1xuICAgICAgdXJsID0gdGhpcy5lbnYudDNcbiAgICB9IGVsc2UgaWYgKHN5c3RlbSA9PT0gQ29tcGFuaWVzRW51bS5CUk9LRVJBR0UpIHtcbiAgICAgIHVybCA9IHRoaXMuZW52LmJyb2tlcmFnZVxuICAgIH1cblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH1cbiAgfVxuXG4gIGRldGVjdEFjdGl2ZUFuZEluYWN0aXZlQXBwcygpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxTeXN0ZW1zID0gW3tcbiAgICAgIGlkOiBDb21wYW5pZXNFbnVtLlQzLFxuICAgICAgbmFtZTogJ1QzIFRNUydcbiAgICB9LCB7XG4gICAgICBpZDogQ29tcGFuaWVzRW51bS5UTVQsXG4gICAgICBuYW1lOiAnVHJhY2sgTXkgVHJ1Y2snXG4gICAgfSwge1xuICAgICAgaWQ6IENvbXBhbmllc0VudW0uQlJPS0VSQUdFLFxuICAgICAgbmFtZTogJ0Jyb2tlcmFnZSdcbiAgICB9XG4gICAgXTtcblxuICAgIGFsbFN5c3RlbXMuZm9yRWFjaCgoc3lzdGVtOiB7aWQ6IENvbXBhbmllc0VudW0sIG5hbWU6IHN0cmluZywgY2hlY2tlZD86IGJvb2xlYW59KSA9PiB7XG4gICAgICBpZiAodGhpcy5wbGF0Zm9ybSA9PT0gc3lzdGVtLmlkKSB7XG4gICAgICAgIHN5c3RlbS5jaGVja2VkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudXNlckRhdGEuc3lzdGVtUm9sZXM/LmZpbmQoKHJvbGU6IFN5c3RlbVJvbGVJbnRlcmZhY2UpID0+IHJvbGUuc3lzdGVtID09PSBzeXN0ZW0uaWQpKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlQW5kSW5hY3RpdmVQbGF0Zm9ybXNbJ2FjdGl2ZSddLnB1c2goc3lzdGVtKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVBbmRJbmFjdGl2ZVBsYXRmb3Jtc1snaW5hY3RpdmUnXS5wdXNoKHN5c3RlbSlcbiAgICAgIH1cbiAgICB9KVxuXG4gIH1cblxuICBzd2l0Y2hPcmdhbml6YXRpb24oY29tcGFueTogT3JnYW5pemF0aW9uSW50ZXJmYWNlKTogdm9pZCB7XG4gICAgaWYgKGNvbXBhbnkuaWQgPT09IHRoaXMuY3VycmVudENvbXBhbnkuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5odHRwLnBvc3Q8QXV0aEludGVyZmFjZT4oXG4gICAgICB0aGlzLmVudi5kYXRhRW5kcG9pbnQgKyAodGhpcy5wbGF0Zm9ybSAhPT0gQ29tcGFuaWVzRW51bS5PUkdBTklaQVRJT04gPyAnL2lkJyA6ICcnKSArIGAvYXV0aC9jb21wYW5pZXMvJHtjb21wYW55LmlkfS9sb2dpbmAsIHt9XG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBBdXRoSW50ZXJmYWNlKSA9PiB7XG4gICAgICB0aGlzLm5ld0F1dGhlbnRpY2F0ZWRSZXNwb25zZUV2ZW50LmVtaXQocmVzcG9uc2UpXG4gICAgfSlcbiAgfVxuXG4gIGdldEFsbENvbXBhbmllcygpOiB2b2lkIHtcbiAgICB0aGlzLmh0dHAuZ2V0PEFycmF5PE9yZ2FuaXphdGlvbkludGVyZmFjZT4+KFxuICAgICAgdGhpcy5lbnYuZGF0YUVuZHBvaW50ICsgKHRoaXMucGxhdGZvcm0gIT09IENvbXBhbmllc0VudW0uT1JHQU5JWkFUSU9OID8gJy9pZCcgOiAnJykgKyAnL2NvbXBhbmllcy9hbGwnXG4gICAgKS5zdWJzY3JpYmUoKGNvbXBhbmllczogQXJyYXk8T3JnYW5pemF0aW9uSW50ZXJmYWNlPikgPT4ge1xuICAgICAgY29uc3QgY3VycmVudENvbXBhbnkgPSBjb21wYW5pZXMuZmluZCgoY29tcGFueTogT3JnYW5pemF0aW9uSW50ZXJmYWNlKSA9PiBjb21wYW55LmlkID09PSB0aGlzLnVzZXJEYXRhLmNvbXBhbnlJZClcbiAgICAgIGlmIChjdXJyZW50Q29tcGFueSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb21wYW55ID0gY3VycmVudENvbXBhbnk7XG4gICAgICB9XG4gICAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMgPSBjb21wYW5pZXM7XG4gICAgICBpZiAodGhpcy5wbGF0Zm9ybSA9PT0gQ29tcGFuaWVzRW51bS5PUkdBTklaQVRJT04pIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb05ld09yZ2FuaXphdGlvbiA9IHRoaXMuYWNjZXNzVG9BZGROZXcoKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgb3BlbkxhbmRpbmcoKTogdm9pZCB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmVudi5tYWluRG9tYWluO1xuICB9XG5cbiAgLy8gT25seSBmb3Igb3JnYW5pemF0aW9uXG4gIGFjY2Vzc1RvQWRkTmV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHRoaXMuYWxsT3JnYW5pemF0aW9ucy5maW5kKChjb21wYW55OiBPcmdhbml6YXRpb25JbnRlcmZhY2UpID0+IGNvbXBhbnkuaXNNeUNvbXBhbnkpKVxuICB9XG5cbiAgYWRkTmV3T3JnYW5pemF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXV0aC9vcmdhbml6YXRpb24vYWRkJ10pXG4gIH1cbiAgLy8gRW5kIE9mIE9ubHkgZm9yIG9yZ2FuaXphdGlvblxuXG4gIG5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gIH1cblxuICBkZXRlY3RBY3RpdmVQYWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnJvdXRlci51cmwucmVwbGFjZSgnLycsICcnKTtcbiAgICBsZXQgbGluayA9IHRoaXMubmF2aWdhdGlvbkxpbmtzLmZpbmQoKGxpbms6IE5hdmlnYXRpb25MaW5rcykgPT4gcGFnZSA9PT0gbGluay5saW5rVG8pO1xuXG4gICAgaWYgKCFsaW5rKSB7XG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgbGluayA9IHRoaXMubmF2aWdhdGlvbkxpbmtzLmZpbmQoKGxpbms6IE5hdmlnYXRpb25MaW5rcykgPT4gcGFnZS5pbmNsdWRlcyhsaW5rLmxpbmtUbykpO1xuICAgIH1cblxuICAgIGlmIChsaW5rKSB7XG4gICAgICBpZiAobGluay5zdWJQYWdlcykge1xuICAgICAgICB0aGlzLnNlY29uZExheWVyT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWNvbmRMYXllckxpbmtzID0gbGluay5zdWJQYWdlcztcblxuICAgICAgICBjb25zdCBzdWJMaW5rID0gbGluay5zdWJQYWdlcy5maW5kKChsaW5rOiBOYXZpZ2F0aW9uTGlua3MpID0+IHBhZ2UgPT09IGxpbmsubGlua1RvKTtcbiAgICAgICAgaWYgKHN1YkxpbmspIHtcbiAgICAgICAgICB0aGlzLnNlY29uZExheWVyQWN0aXZlUGFnZSA9IHN1YkxpbmsucGFnZUVudW07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2Vjb25kTGF5ZXJPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWNvbmRMYXllckxpbmtzID0gW107XG4gICAgICAgIHRoaXMuc2Vjb25kTGF5ZXJBY3RpdmVQYWdlID0gJyc7XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGl2ZVBhZ2UgPSBsaW5rLnBhZ2VFbnVtO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlKGxpbms6IE5hdmlnYXRpb25MaW5rcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZVBhZ2UgPT09IGxpbmsubGlua1RvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2xpbmsubGlua1RvXSlcbiAgfVxuXG4gIGNoYW5nZUNvbGxhcHNlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHZhbHVlO1xuICAgIHRoaXMuY29sbGFwc2VFdmVudC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhY3lQb2xpY3lPclRlcm1zQ29uZGl0aW9uKHByaXZhY3kgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChwcml2YWN5KSB7XG4gICAgICB3aW5kb3cub3Blbih0aGlzLmVudi5tYWluRG9tYWluICsgJy9wcml2YWN5LXBvbGljeScsICdfYmxhbmsnKVxuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbih0aGlzLmVudi5tYWluRG9tYWluICsgJy90ZXJtcy1hbmQtY29uZGl0aW9ucycsICdfYmxhbmsnKVxuICAgIH1cbiAgfVxuXG4gIHNpZ25PdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zaWduT3V0RXZlbnQuZW1pdCgpXG4gIH1cblxuICBvcGVuWmVuZGVza1BhZ2Uoc3VwcG9ydCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldDx7YWNjZXNzVG9rZW46IHN0cmluZ30+KHRoaXMuZW52LmRhdGFFbmRwb2ludCArICh0aGlzLnBsYXRmb3JtICE9PSBDb21wYW5pZXNFbnVtLk9SR0FOSVpBVElPTiA/ICcvaWQnIDogJycpICsgYC9rbm93bGVkZ2UtYmFzZS9qd3QtdG9rZW5gKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiB7YWNjZXNzVG9rZW46IHN0cmluZ30pID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0VXJsID0gYCR7dGhpcy5lbnYuemVuZGVza1VybH0vaGMvZW4tdXNgICsgKHN1cHBvcnQgPyAnL3JlcXVlc3RzL25ldycgOiAnJyk7XG4gICAgICAgIGNvbnN0IHplbmRlc2tVcmwgPSBgJHt0aGlzLmVudi56ZW5kZXNrVXJsfS9hY2Nlc3Mvand0P2p3dD0ke3Jlcy5hY2Nlc3NUb2tlbn0mcmV0dXJuX3RvPSR7dGFyZ2V0VXJsfWA7XG4gICAgICAgIHdpbmRvdy5vcGVuKHplbmRlc2tVcmwpO1xuICAgICAgfSlcbiAgfVxuXG4gIG1hbmFnZUFjY291bnQoKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5lbnYub3JnYW5pemF0aW9uVXJsLCAnX2JsYW5rJylcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpbl9zaWRlYmFyXCJcbiAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uTGlua3MgJiYgdXNlckRhdGFcIlxuICAgICBbY2xhc3MuY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbl9zaWRlYmFyLS1oZWFkZXJcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImxvZ28gcG9pbnRlclwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5MYW5kaW5nKClcIlxuICAgICAgICAgICAgIFtzcmNdPVwiJy9hc3NldHMvbG9nb3MvJyArIHBsYXRmb3JtICsgJy5zdmcnXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9hcHBzLnBuZ1wiIGFsdD1cIlwiIGNsYXNzPVwicG9pbnRlclwiICpuZ0lmPVwiIWlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWF0TWVudVwiXG4gICAgICAgID5cblxuICAgICAgICA8bWF0LW1lbnUgI21hdE1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzaWRlYmFyX3BsYXRmb3Jtc19tZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV90aXRsZVwiPlxuICAgICAgICAgICAgICAgIEFjdGl2ZSBBcHBzXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiICpuZ0Zvcj1cImxldCBhcHAgb2YgYWN0aXZlQW5kSW5hY3RpdmVQbGF0Zm9ybXNbJ2FjdGl2ZSddXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblBsYXRmb3JtKGFwcC5pZClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgY2xhc3M9XCJsb2dvXCIgW3NyY109XCInL2Fzc2V0cy9sb2dvcy8nICsgYXBwLmlkICsgJy5zdmcnXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3thcHAubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgY2xhc3M9XCJtbC1hdXRvXCIgc3JjPVwiL2Fzc2V0cy9zZWxlY3RlZF9vcmdhbml6YXRpb24uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwcC5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV90aXRsZVwiPlxuICAgICAgICAgICAgICAgIEluYWN0aXZlIEFwcHNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiICpuZ0Zvcj1cImxldCBhcHAgb2YgYWN0aXZlQW5kSW5hY3RpdmVQbGF0Zm9ybXNbJ2luYWN0aXZlJ11cIj5cbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIGNsYXNzPVwibG9nb1wiIFtzcmNdPVwiJy9hc3NldHMvbG9nb3MvJyArIGFwcC5pZCArICcuc3ZnJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXBwLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0tY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2Vjb25kTGF5ZXJMaW5rcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWNvbnRlbnQtLXRvb2xiYXJcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVCYWNrKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL2Fzc2V0cy9iYWNrLnN2Z1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPkJhY2s8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWNvbnRlbnQtLXN1Yl90aXRsZVwiPlxuICAgICAgICAgICAgICAgIEFkbWluXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiAoc2Vjb25kTGF5ZXJMaW5rcy5sZW5ndGggPyBzZWNvbmRMYXllckxpbmtzIDogbmF2aWdhdGlvbkxpbmtzKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIiAqbmdJZj1cImxpbmsuaGFzRGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0tY29udGVudC0tbGluayBwb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImxpbmsucGFnZUVudW0gPT09IGFjdGl2ZVBhZ2UgfHwgbGluay5wYWdlRW51bSA9PT0gc2Vjb25kTGF5ZXJBY3RpdmVQYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKGxpbmspXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFyZW50X2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb25cIiBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiJy9hc3NldHMvbGlua3MvJyArIHBsYXRmb3JtICsgJy8nICsgbGluay5pbWFnZSArICcuc3ZnJ1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3tsaW5rLnRpdGxlIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0tZm9vdGVyXCIgKm5nSWY9XCJ1c2VyRGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbl9zaWRlYmFyLS1mb290ZXItLXRvZ2dsZVwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBvaW50ZXJcIiBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgIHNyYz1cIi9hc3NldHMvdG9nZ2xlLXN0YXRlLWxlZnQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUNvbGxhcHNlKHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwb2ludGVyXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgIHNyYz1cIi9hc3NldHMvdG9nZ2xlLXN0YXRlLXJpZ2h0LnN2Z1wiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VDb2xsYXBzZShmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0tZm9vdGVyLS1wcm9maWxlXCI+XG4gICAgICAgICAgICA8aS10ZWNoLWNvbXBhbnktaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlckRhdGFdPVwidXNlckRhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhdGZvcm1dPVwicGxhdGZvcm1cIlxuICAgICAgICAgICAgICAgICAgICBbY3VycmVudENvbXBhbnldPVwiY3VycmVudENvbXBhbnlcIlxuICAgICAgICAgICAgPjwvaS10ZWNoLWNvbXBhbnktaW1hZ2U+XG4gICAgICAgICAgICA8bWF0LW1lbnUgI21hdE1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzaWRlYmFyX2JvdHRvbV9tZW51XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcF9iYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgYWx0PVwiXCIgW3NyY109XCJ1c2VyRGF0YS5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyRGF0YS5pbWFnZTsgZWxzZSBOb0ltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI05vSW1hZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Ugbm9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VzZXJEYXRhLmZpcnN0TmFtZSB8IHNsaWNlOiAwIDogMSB8IHVwcGVyY2FzZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7dXNlckRhdGEuZmlyc3ROYW1lfX0ge3t1c2VyRGF0YS5sYXN0TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1haWxcIj57e3VzZXJEYXRhLmVtYWlsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBtYXQtbWVudS1pdGVtICpuZ0lmPVwicGxhdGZvcm0gIT09IENvbXBhbmllc0VudW0uT1JHQU5JWkFUSU9OXCIgY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1hbmFnZUFjY291bnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICBNYW5hZ2UgQWNjb3VudFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSAqbmdJZj1cInBsYXRmb3JtID09PSBDb21wYW5pZXNFbnVtLk9SR0FOSVpBVElPTiAmJiBhY2Nlc3NUb05ld09yZ2FuaXphdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTmV3T3JnYW5pemF0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgIEFkZCBuZXcgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsT3JnYW5pemF0aW9ucy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCIgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hfdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd2l0Y2ggT3JnYW5pemF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1hdF9tZW51X29yZ2FuaXphdGlvblwiIChjbGljayk9XCJzd2l0Y2hPcmdhbml6YXRpb24ob3JnYW5pemF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcmdhbml6YXRpb24gb2YgYWxsT3JnYW5pemF0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ2FuaXphdGlvbl9pdGVtX2luX21lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBjbGFzcz1cImltYWdlXCIgW3NyY109XCJvcmdhbml6YXRpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3JnYW5pemF0aW9uLmltYWdlOyBlbHNlIE5vSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjTm9JbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBub19pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3JnYW5pemF0aW9uLm5hbWUgfCBzbGljZTogMCA6IDEgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7b3JnYW5pemF0aW9uLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiICpuZ0lmPVwib3JnYW5pemF0aW9uLmlkID09PSBjdXJyZW50Q29tcGFueS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlzU2VsZWN0ZWRcIiBzcmM9XCIvYXNzZXRzL3NlbGVjdGVkX29yZ2FuaXphdGlvbi5zdmdcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiIChjbGljayk9XCJvcGVuWmVuZGVza1BhZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IENlbnRlclxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiIChjbGljayk9XCJwcml2YWN5UG9saWN5T3JUZXJtc0NvbmRpdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIFRlcm1zIEFuZCBDb25kaXRpb25zXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic3RhbmRhcmRfbWVudV9pdGVtXCIgKGNsaWNrKT1cInByaXZhY3lQb2xpY3lPclRlcm1zQ29uZGl0aW9uKHRydWUpXCI+XG4gICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic3RhbmRhcmRfbWVudV9pdGVtXCIgKGNsaWNrKT1cInNpZ25PdXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICBTaWduIG91dFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL25ldy1zaWRlYmFyL25ldy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9uZXctc2lkZWJhci9uZXctc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUVMLGFBQWEsRUFHZCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQWN6RCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGFBQWE7UUFDWCxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQXNC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clZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBTbGljZVBpcGUsIFVwcGVyQ2FzZVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtcbiAgQXV0aEludGVyZmFjZSxcbiAgQ29tcGFuaWVzRW51bSxcbiAgT3JnYW5pemF0aW9uSW50ZXJmYWNlLFxuICBTeXN0ZW1Sb2xlSW50ZXJmYWNlXG59IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2F1dGguaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgQ29tcGFueUltYWdlQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcGFueS1pbWFnZS9jb21wYW55LWltYWdlLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxpbmtzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvbmF2aWdhdGlvbi1saW5rLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpLXRlY2gtc2lkZWJhcicsXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgVHJhbnNsYXRlTW9kdWxlLCBNYXRNZW51LCBNYXRJY29uLFxuICAgIE1hdE1lbnVNb2R1bGUsIENvbXBhbnlJbWFnZUNvbXBvbmVudCwgVXBwZXJDYXNlUGlwZSwgU2xpY2VQaXBlLFxuICAgIE1hdFJpcHBsZU1vZHVsZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vbmV3LXNpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbmV3LXNpZGViYXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE5ld1NpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgY2FuRGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnU2lkZWJhckNvbGxhcHNlZCcsIGAke3RoaXMuaXNDb2xsYXBzZWR9YClcbiAgfVxuICBAT3V0cHV0KCkgY29sbGFwc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNpZ25PdXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG5ld0F1dGhlbnRpY2F0ZWRSZXNwb25zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRoSW50ZXJmYWNlPigpO1xuICBASW5wdXQoKSBwbGF0Zm9ybSE6IENvbXBhbmllc0VudW07XG4gIEBJbnB1dCgpIG5hdmlnYXRpb25MaW5rcyE6IEFycmF5PE5hdmlnYXRpb25MaW5rcz47XG4gIEBJbnB1dCgpIGVudiE6IGFueTtcbiAgQElucHV0KCkgdXNlckRhdGEhOiBBdXRoSW50ZXJmYWNlO1xuICBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuICBhY3RpdmVQYWdlITogc3RyaW5nO1xuICBzZWNvbmRMYXllckFjdGl2ZVBhZ2UhOiBzdHJpbmc7XG4gIHNlY29uZExheWVyT3BlbmVkID0gZmFsc2U7XG4gIHNlY29uZExheWVyTGlua3M6IEFycmF5PE5hdmlnYXRpb25MaW5rcz4gPSBbXTtcbiAgY3VycmVudENvbXBhbnkhOk9yZ2FuaXphdGlvbkludGVyZmFjZTtcbiAgYWxsT3JnYW5pemF0aW9uczogQXJyYXk8T3JnYW5pemF0aW9uSW50ZXJmYWNlPiA9IFtdO1xuICBhY3RpdmVBbmRJbmFjdGl2ZVBsYXRmb3JtczogUmVjb3JkPHN0cmluZywgQXJyYXk8e2lkOiBDb21wYW5pZXNFbnVtLCBuYW1lOiBzdHJpbmcsIGNoZWNrZWQ/OiBib29sZWFufT4+ID0ge1xuICAgIGFjdGl2ZTogW10sXG4gICAgaW5hY3RpdmU6IFtdXG4gIH1cbiAgQ29tcGFuaWVzRW51bSA9IENvbXBhbmllc0VudW1cbiAgYWNjZXNzVG9OZXdPcmdhbml6YXRpb24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGVjdEFjdGl2ZVBhZ2UoKTtcbiAgICB0aGlzLmRldGVjdEFjdGl2ZUFuZEluYWN0aXZlQXBwcygpO1xuICAgIHRoaXMuaXNDb2xsYXBzZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnU2lkZWJhckNvbGxhcHNlZCcpID09PSAndHJ1ZScgfHwgZmFsc2U7XG4gICAgdGhpcy5jb2xsYXBzZUV2ZW50LmVtaXQodGhpcy5pc0NvbGxhcHNlZCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldEFsbENvbXBhbmllcygpO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLmRldGVjdEFjdGl2ZVBhZ2UoKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3BlblBsYXRmb3JtKHN5c3RlbTogQ29tcGFuaWVzRW51bSk6IHZvaWQge1xuICAgIGlmIChzeXN0ZW0gPT09IHRoaXMucGxhdGZvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdXJsO1xuICAgIGlmIChzeXN0ZW0gPT09IENvbXBhbmllc0VudW0uVDMpIHtcbiAgICAgIHVybCA9IHRoaXMuZW52LnQzXG4gICAgfSBlbHNlIGlmIChzeXN0ZW0gPT09IENvbXBhbmllc0VudW0uQlJPS0VSQUdFKSB7XG4gICAgICB1cmwgPSB0aGlzLmVudi5icm9rZXJhZ2VcbiAgICB9XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9XG4gIH1cblxuICBkZXRlY3RBY3RpdmVBbmRJbmFjdGl2ZUFwcHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsU3lzdGVtcyA9IFt7XG4gICAgICBpZDogQ29tcGFuaWVzRW51bS5UMyxcbiAgICAgIG5hbWU6ICdUMyBUTVMnXG4gICAgfSwge1xuICAgICAgaWQ6IENvbXBhbmllc0VudW0uVE1ULFxuICAgICAgbmFtZTogJ1RyYWNrIE15IFRydWNrJ1xuICAgIH0sIHtcbiAgICAgIGlkOiBDb21wYW5pZXNFbnVtLkJST0tFUkFHRSxcbiAgICAgIG5hbWU6ICdCcm9rZXJhZ2UnXG4gICAgfVxuICAgIF07XG5cbiAgICBhbGxTeXN0ZW1zLmZvckVhY2goKHN5c3RlbToge2lkOiBDb21wYW5pZXNFbnVtLCBuYW1lOiBzdHJpbmcsIGNoZWNrZWQ/OiBib29sZWFufSkgPT4ge1xuICAgICAgaWYgKHRoaXMucGxhdGZvcm0gPT09IHN5c3RlbS5pZCkge1xuICAgICAgICBzeXN0ZW0uY2hlY2tlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChzeXN0ZW0uaWQgPT09IENvbXBhbmllc0VudW0uQlJPS0VSQUdFKSB7XG4gICAgICAgIHN5c3RlbS5uYW1lID0gJ0xvYWRib2FyZCdcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZXJEYXRhLnN5c3RlbVJvbGVzPy5maW5kKChyb2xlOiBTeXN0ZW1Sb2xlSW50ZXJmYWNlKSA9PiByb2xlLnN5c3RlbSA9PT0gc3lzdGVtLmlkKSkge1xuICAgICAgICB0aGlzLmFjdGl2ZUFuZEluYWN0aXZlUGxhdGZvcm1zWydhY3RpdmUnXS5wdXNoKHN5c3RlbSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWN0aXZlQW5kSW5hY3RpdmVQbGF0Zm9ybXNbJ2luYWN0aXZlJ10ucHVzaChzeXN0ZW0pXG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbiAgc3dpdGNoT3JnYW5pemF0aW9uKGNvbXBhbnk6IE9yZ2FuaXphdGlvbkludGVyZmFjZSk6IHZvaWQge1xuICAgIGlmIChjb21wYW55LmlkID09PSB0aGlzLmN1cnJlbnRDb21wYW55LmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaHR0cC5wb3N0PEF1dGhJbnRlcmZhY2U+KFxuICAgICAgdGhpcy5lbnYuZGF0YUVuZHBvaW50ICsgKHRoaXMucGxhdGZvcm0gIT09IENvbXBhbmllc0VudW0uT1JHQU5JWkFUSU9OID8gJy9pZCcgOiAnJykgKyBgL2F1dGgvY29tcGFuaWVzLyR7Y29tcGFueS5pZH0vbG9naW5gLCB7fVxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogQXV0aEludGVyZmFjZSkgPT4ge1xuICAgICAgdGhpcy5uZXdBdXRoZW50aWNhdGVkUmVzcG9uc2VFdmVudC5lbWl0KHJlc3BvbnNlKVxuICAgIH0pXG4gIH1cblxuICBnZXRBbGxDb21wYW5pZXMoKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldDxBcnJheTxPcmdhbml6YXRpb25JbnRlcmZhY2U+PihcbiAgICAgIHRoaXMuZW52LmRhdGFFbmRwb2ludCArICh0aGlzLnBsYXRmb3JtICE9PSBDb21wYW5pZXNFbnVtLk9SR0FOSVpBVElPTiA/ICcvaWQnIDogJycpICsgJy9jb21wYW5pZXMvYWxsJ1xuICAgICkuc3Vic2NyaWJlKChjb21wYW5pZXM6IEFycmF5PE9yZ2FuaXphdGlvbkludGVyZmFjZT4pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb21wYW55ID0gY29tcGFuaWVzLmZpbmQoKGNvbXBhbnk6IE9yZ2FuaXphdGlvbkludGVyZmFjZSkgPT4gY29tcGFueS5pZCA9PT0gdGhpcy51c2VyRGF0YS5jb21wYW55SWQpXG4gICAgICBpZiAoY3VycmVudENvbXBhbnkpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29tcGFueSA9IGN1cnJlbnRDb21wYW55O1xuICAgICAgfVxuICAgICAgdGhpcy5hbGxPcmdhbml6YXRpb25zID0gY29tcGFuaWVzO1xuICAgICAgaWYgKHRoaXMucGxhdGZvcm0gPT09IENvbXBhbmllc0VudW0uT1JHQU5JWkFUSU9OKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzVG9OZXdPcmdhbml6YXRpb24gPSB0aGlzLmFjY2Vzc1RvQWRkTmV3KCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9wZW5MYW5kaW5nKCk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5lbnYubWFpbkRvbWFpbjtcbiAgfVxuXG4gIC8vIE9ubHkgZm9yIG9yZ2FuaXphdGlvblxuICBhY2Nlc3NUb0FkZE5ldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLmFsbE9yZ2FuaXphdGlvbnMuZmluZCgoY29tcGFueTogT3JnYW5pemF0aW9uSW50ZXJmYWNlKSA9PiBjb21wYW55LmlzTXlDb21wYW55KSlcbiAgfVxuXG4gIGFkZE5ld09yZ2FuaXphdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2F1dGgvb3JnYW5pemF0aW9uL2FkZCddKVxuICB9XG4gIC8vIEVuZCBPZiBPbmx5IGZvciBvcmdhbml6YXRpb25cblxuICBuYXZpZ2F0ZUJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICB9XG5cbiAgZGV0ZWN0QWN0aXZlUGFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UoJy8nLCAnJyk7XG4gICAgbGV0IGxpbmsgPSB0aGlzLm5hdmlnYXRpb25MaW5rcy5maW5kKChsaW5rOiBOYXZpZ2F0aW9uTGlua3MpID0+IHBhZ2UgPT09IGxpbmsubGlua1RvKTtcblxuICAgIGlmICghbGluaykge1xuICAgICAgY29uc3QgcGFnZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICAgIGxpbmsgPSB0aGlzLm5hdmlnYXRpb25MaW5rcy5maW5kKChsaW5rOiBOYXZpZ2F0aW9uTGlua3MpID0+IHBhZ2UuaW5jbHVkZXMobGluay5saW5rVG8pKTtcbiAgICB9XG5cbiAgICBpZiAobGluaykge1xuICAgICAgaWYgKGxpbmsuc3ViUGFnZXMpIHtcbiAgICAgICAgdGhpcy5zZWNvbmRMYXllck9wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2Vjb25kTGF5ZXJMaW5rcyA9IGxpbmsuc3ViUGFnZXM7XG5cbiAgICAgICAgY29uc3Qgc3ViTGluayA9IGxpbmsuc3ViUGFnZXMuZmluZCgobGluazogTmF2aWdhdGlvbkxpbmtzKSA9PiBwYWdlID09PSBsaW5rLmxpbmtUbyk7XG4gICAgICAgIGlmIChzdWJMaW5rKSB7XG4gICAgICAgICAgdGhpcy5zZWNvbmRMYXllckFjdGl2ZVBhZ2UgPSBzdWJMaW5rLnBhZ2VFbnVtO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlY29uZExheWVyT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2Vjb25kTGF5ZXJMaW5rcyA9IFtdO1xuICAgICAgICB0aGlzLnNlY29uZExheWVyQWN0aXZlUGFnZSA9ICcnO1xuICAgICAgfVxuICAgICAgdGhpcy5hY3RpdmVQYWdlID0gbGluay5wYWdlRW51bTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZShsaW5rOiBOYXZpZ2F0aW9uTGlua3MpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVQYWdlID09PSBsaW5rLmxpbmtUbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtsaW5rLmxpbmtUb10pXG4gIH1cblxuICBjaGFuZ2VDb2xsYXBzZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmNvbGxhcHNlRXZlbnQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YWN5UG9saWN5T3JUZXJtc0NvbmRpdGlvbihwcml2YWN5ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAocHJpdmFjeSkge1xuICAgICAgd2luZG93Lm9wZW4odGhpcy5lbnYubWFpbkRvbWFpbiArICcvcHJpdmFjeS1wb2xpY3knLCAnX2JsYW5rJylcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lm9wZW4odGhpcy5lbnYubWFpbkRvbWFpbiArICcvdGVybXMtYW5kLWNvbmRpdGlvbnMnLCAnX2JsYW5rJylcbiAgICB9XG4gIH1cblxuICBzaWduT3V0KCk6IHZvaWQge1xuICAgIHRoaXMuc2lnbk91dEV2ZW50LmVtaXQoKVxuICB9XG5cbiAgb3BlblplbmRlc2tQYWdlKHN1cHBvcnQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQ8e2FjY2Vzc1Rva2VuOiBzdHJpbmd9Pih0aGlzLmVudi5kYXRhRW5kcG9pbnQgKyAodGhpcy5wbGF0Zm9ybSAhPT0gQ29tcGFuaWVzRW51bS5PUkdBTklaQVRJT04gPyAnL2lkJyA6ICcnKSArIGAva25vd2xlZGdlLWJhc2Uvand0LXRva2VuYClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczoge2FjY2Vzc1Rva2VuOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldFVybCA9IGAke3RoaXMuZW52LnplbmRlc2tVcmx9L2hjL2VuLXVzYCArIChzdXBwb3J0ID8gJy9yZXF1ZXN0cy9uZXcnIDogJycpO1xuICAgICAgICBjb25zdCB6ZW5kZXNrVXJsID0gYCR7dGhpcy5lbnYuemVuZGVza1VybH0vYWNjZXNzL2p3dD9qd3Q9JHtyZXMuYWNjZXNzVG9rZW59JnJldHVybl90bz0ke3RhcmdldFVybH1gO1xuICAgICAgICB3aW5kb3cub3Blbih6ZW5kZXNrVXJsKTtcbiAgICAgIH0pXG4gIH1cblxuICBtYW5hZ2VBY2NvdW50KCk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKHRoaXMuZW52Lm9yZ2FuaXphdGlvblVybCwgJ19ibGFuaycpXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhclwiXG4gICAgICpuZ0lmPVwibmF2aWdhdGlvbkxpbmtzICYmIHVzZXJEYXRhXCJcbiAgICAgW2NsYXNzLmNvbGxhcHNlZF09XCJpc0NvbGxhcHNlZFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0taGVhZGVyXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJsb2dvIHBvaW50ZXJcIiBhbHQ9XCJcIlxuICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGFuZGluZygpXCJcbiAgICAgICAgICAgICBbc3JjXT1cIicvYXNzZXRzL2xvZ29zLycgKyBwbGF0Zm9ybSArICcuc3ZnJ1wiPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvYXBwcy5wbmdcIiBhbHQ9XCJcIiBjbGFzcz1cInBvaW50ZXJcIiAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1hdE1lbnVcIlxuICAgICAgICA+XG5cbiAgICAgICAgPG1hdC1tZW51ICNtYXRNZW51PVwibWF0TWVudVwiIGNsYXNzPVwic2lkZWJhcl9wbGF0Zm9ybXNfbWVudVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfdGl0bGVcIj5cbiAgICAgICAgICAgICAgICBBY3RpdmUgQXBwc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIiAqbmdGb3I9XCJsZXQgYXBwIG9mIGFjdGl2ZUFuZEluYWN0aXZlUGxhdGZvcm1zWydhY3RpdmUnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5QbGF0Zm9ybShhcHAuaWQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIGNsYXNzPVwibG9nb1wiIFtzcmNdPVwiJy9hc3NldHMvbG9nb3MvJyArIGFwcC5pZCArICcuc3ZnJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YXBwLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIGNsYXNzPVwibWwtYXV0b1wiIHNyYz1cIi9hc3NldHMvc2VsZWN0ZWRfb3JnYW5pemF0aW9uLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhcHAuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfdGl0bGVcIj5cbiAgICAgICAgICAgICAgICBJbmFjdGl2ZSBBcHBzXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIiAqbmdGb3I9XCJsZXQgYXBwIG9mIGFjdGl2ZUFuZEluYWN0aXZlUGxhdGZvcm1zWydpbmFjdGl2ZSddXCI+XG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBjbGFzcz1cImxvZ29cIiBbc3JjXT1cIicvYXNzZXRzL2xvZ29zLycgKyBhcHAuaWQgKyAnLnN2ZydcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e2FwcC5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY29uZExheWVyTGlua3MubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbl9zaWRlYmFyLS1jb250ZW50LS10b29sYmFyXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlQmFjaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9hc3NldHMvYmFjay5zdmdcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5CYWNrPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbl9zaWRlYmFyLS1jb250ZW50LS1zdWJfdGl0bGVcIj5cbiAgICAgICAgICAgICAgICBBZG1pblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxpbmsgb2YgKHNlY29uZExheWVyTGlua3MubGVuZ3RoID8gc2Vjb25kTGF5ZXJMaW5rcyA6IG5hdmlnYXRpb25MaW5rcylcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCIgKm5nSWY9XCJsaW5rLmhhc0RpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWNvbnRlbnQtLWxpbmsgcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJsaW5rLnBhZ2VFbnVtID09PSBhY3RpdmVQYWdlIHx8IGxpbmsucGFnZUVudW0gPT09IHNlY29uZExheWVyQWN0aXZlUGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShsaW5rKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhcmVudF9pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIicvYXNzZXRzL2xpbmtzLycgKyBwbGF0Zm9ybSArICcvJyArIGxpbmsuaW1hZ2UgKyAnLnN2ZydcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7bGluay50aXRsZSB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWZvb3RlclwiICpuZ0lmPVwidXNlckRhdGFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5fc2lkZWJhci0tZm9vdGVyLS10b2dnbGVcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwb2ludGVyXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNDb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICBzcmM9XCIvYXNzZXRzL3RvZ2dsZS1zdGF0ZS1sZWZ0LnN2Z1wiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VDb2xsYXBzZSh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwicG9pbnRlclwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNDb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgICBzcmM9XCIvYXNzZXRzL3RvZ2dsZS1zdGF0ZS1yaWdodC5zdmdcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29sbGFwc2UoZmFsc2UpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX3NpZGViYXItLWZvb3Rlci0tcHJvZmlsZVwiPlxuICAgICAgICAgICAgPGktdGVjaC1jb21wYW55LWltYWdlXG4gICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJEYXRhXT1cInVzZXJEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYXRmb3JtXT1cInBsYXRmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRDb21wYW55XT1cImN1cnJlbnRDb21wYW55XCJcbiAgICAgICAgICAgID48L2ktdGVjaC1jb21wYW55LWltYWdlPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtYXRNZW51PVwibWF0TWVudVwiIGNsYXNzPVwic2lkZWJhcl9ib3R0b21fbWVudVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BfYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWFnZVwiIGFsdD1cIlwiIFtzcmNdPVwidXNlckRhdGEuaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidXNlckRhdGEuaW1hZ2U7IGVsc2UgTm9JbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNOb0ltYWdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlIG5vX2ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VyRGF0YS5maXJzdE5hbWUgfCBzbGljZTogMCA6IDEgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3VzZXJEYXRhLmZpcnN0TmFtZX19IHt7dXNlckRhdGEubGFzdE5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtYWlsXCI+e3t1c2VyRGF0YS5lbWFpbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSAqbmdJZj1cInBsYXRmb3JtICE9PSBDb21wYW5pZXNFbnVtLk9SR0FOSVpBVElPTlwiIGNsYXNzPVwic3RhbmRhcmRfbWVudV9pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYW5hZ2VBY2NvdW50KClcIj5cbiAgICAgICAgICAgICAgICAgICAgTWFuYWdlIEFjY291bnRcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJwbGF0Zm9ybSA9PT0gQ29tcGFuaWVzRW51bS5PUkdBTklaQVRJT04gJiYgYWNjZXNzVG9OZXdPcmdhbml6YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE5ld09yZ2FuaXphdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICBBZGQgbmV3IG9yZ2FuaXphdGlvblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbE9yZ2FuaXphdGlvbnMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiID48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoIE9yZ2FuaXphdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJtYXRfbWVudV9vcmdhbml6YXRpb25cIiAoY2xpY2spPVwic3dpdGNoT3JnYW5pemF0aW9uKG9yZ2FuaXphdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3JnYW5pemF0aW9uIG9mIGFsbE9yZ2FuaXphdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmdhbml6YXRpb25faXRlbV9pbl9tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgY2xhc3M9XCJpbWFnZVwiIFtzcmNdPVwib3JnYW5pemF0aW9uLmltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9yZ2FuaXphdGlvbi5pbWFnZTsgZWxzZSBOb0ltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI05vSW1hZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Ugbm9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZ2FuaXphdGlvbi5uYW1lIHwgc2xpY2U6IDAgOiAxIHwgdXBwZXJjYXNlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e29yZ2FuaXphdGlvbi5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiAqbmdJZj1cIm9yZ2FuaXphdGlvbi5pZCA9PT0gY3VycmVudENvbXBhbnkuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpc1NlbGVjdGVkXCIgc3JjPVwiL2Fzc2V0cy9zZWxlY3RlZF9vcmdhbml6YXRpb24uc3ZnXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIiAoY2xpY2spPVwib3BlblplbmRlc2tQYWdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBDZW50ZXJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJzdGFuZGFyZF9tZW51X2l0ZW1cIiAoY2xpY2spPVwicHJpdmFjeVBvbGljeU9yVGVybXNDb25kaXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICBUZXJtcyBBbmQgQ29uZGl0aW9uc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiIChjbGljayk9XCJwcml2YWN5UG9saWN5T3JUZXJtc0NvbmRpdGlvbih0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICBQcml2YWN5IFBvbGljeVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cInN0YW5kYXJkX21lbnVfaXRlbVwiIChjbGljayk9XCJzaWduT3V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgU2lnbiBvdXRcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1708,6 +1708,9 @@ class NewSidebarComponent {
|
|
|
1708
1708
|
if (this.platform === system.id) {
|
|
1709
1709
|
system.checked = true;
|
|
1710
1710
|
}
|
|
1711
|
+
if (system.id === CompaniesEnum.BROKERAGE) {
|
|
1712
|
+
system.name = 'Loadboard';
|
|
1713
|
+
}
|
|
1711
1714
|
if (this.userData.systemRoles?.find((role) => role.system === system.id)) {
|
|
1712
1715
|
this.activeAndInactivePlatforms['active'].push(system);
|
|
1713
1716
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.enum.ts","../../../projects/shared-components/src/lib/interfaces/auth.interface.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\n\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n\n /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled'\n}\n","import { TimezoneInterface } from \"./timezone.interface\";\n\nexport interface AuthInterface {\n id: number,\n uniqueId: string,\n email: string,\n countryCode: string,\n phoneNumber: string,\n userName: string,\n firstName: string,\n lastName: string,\n middleName: string,\n image: string,\n accessToken: string,\n refreshToken: string,\n expiresIn: number,\n companyId?: number,\n timeZone?: TimezoneInterface,\n systemRoles?: Array<SystemRoleInterface>\n}\n\nexport interface OrganizationInterface {\n id: number\n uniqueId: string,\n name: string\n image: string\n isMyCompany: boolean\n systems: Array<CompaniesEnum>\n ownerEmail: string\n}\n\nexport interface SystemRoleInterface {\n roles: Array<{key: RoleEnum}>\n system: CompaniesEnum\n}\n\nexport enum RoleEnum {\n T3_ROLE_DISPATCHER = 'T3_ROLE_DISPATCHER',\n T3_ROLE_ADMIN = 'T3_ROLE_ADMIN',\n ROLE_DISPATCHER = 'ROLE_DISPATCHER',\n ROLE_ADMIN = 'ROLE_ADMIN',\n ROLE_OWNER = 'ROLE_OWNER'\n}\n\nexport enum CompaniesEnum {\n T3 = \"T3\",\n TMT = \"TMT\",\n BROKERAGE = \"BROKERAGE\",\n ORGANIZATION = \"ORGANIZATION\",\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' = 'tonal';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: [],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @ViewChild('inputElement', { static: true }) input!: MatInput;\n\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n @Output() valueChangeEmitter = new EventEmitter<any>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = false;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n\n // Subscribe to value changes of the control\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.valueChanges.subscribe(value => {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(value);\n }\n });\n }\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl) {\n this.ngControl.control.reset();\n }\n }\n\n toggleEye(): void {\n this.closed = !this.closed;\n this.input.type = this.closed ? 'password' : 'text';\n }\n\n onValueChange(): void {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(this.ngControl.control.value);\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor &&\n (inputData.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !inputData.iconPrefixColor &&\n !(inputData.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput #inputElement\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n (keyup)=\"onValueChange()\"\n (change)=\"onValueChange()\"\n >\n\n <textarea matInput\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (keyup)=\"onValueChange()\"\n (change)=\"onValueChange()\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visible' : 'visibility_off'\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"toggleEye()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() data_cy = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { ArrayToStringPipe } from \"../../pipes/array-to-string.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n ArrayToStringPipe,\n NgOptimizedImage,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n\n /**\n * See AutocompleteConfigsInterface for available configurations.\n */\n @Input() set configs(data: AutocompleteConfigsInterface) {\n this.selectConfig = data;\n if (!data) {\n return;\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n paginationData: any = { current: 1, last: 0, searchValue: '' };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n selectedOptionForMultipleSelection: Array<any> = [];\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((newValue: any) => {\n // If we have data and a value\n if (this.data.length && newValue) {\n // Check if the current default value doesn't match the new value\n if (!this.defaultValue || this.defaultValue.id !== newValue) {\n // Reset the block flag to allow updating the value\n this.blockRecallDefaultValueSetter = false;\n this.findAndSetDefaultValueFromData();\n }\n } else if (newValue && !this.data.length) {\n // If we have a value but no data, we need to fetch the data\n this.blockRecallDefaultValueSetter = false;\n this.isNeededForRecall = true;\n this.reCallData();\n }\n });\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n this.paginationData.searchValue = searchText || '';\n }\n\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, this.paginationData?.searchValue || '');\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && this.ngControl.value.length == 1) {\n this.setShowingValue(this.data.find((item) => item.id === this.ngControl.value[0]))\n }\n } else {\n const isDisabled = this.ngControl.disabled;\n if (isDisabled) {\n // TODO Remove after migrating all selects\n // this.ngControl.control.enable();\n // if (!this.ngControl.value && !this.data.length) {\n // this.ngControl.control.disable();\n // return;\n // }\n // this.setDefaultValue();\n // this.ngControl.control.disable();\n } else {\n if (!this.ngControl.value && !this.data) {\n return;\n }\n this.setDefaultValue();\n }\n\n }\n }\n\n setDefaultValue(): void {\n this.defaultValue = this.data.find((item) => item.id === this.ngControl.value);\n this.baseData = this.defaultValue\n if (!this.defaultValue) {\n return;\n }\n this.selectionChange.emit()\n this.setShowingValue(this.defaultValue);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n if (this.searchInput) {\n if (this.selectConfig.multiple) {\n this.toggleShowingDataInSelectedOptionsMultipleCase(showingData);\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n toggleShowingDataInSelectedOptionsMultipleCase(showingData: any): void {\n const showingDataByJson = JSON.stringify(showingData);\n const indexOfExistingOption = this.selectedOptionForMultipleSelection.findIndex(\n (optionValue: any) => JSON.stringify(optionValue) === showingDataByJson\n )\n if (indexOfExistingOption >= 0) {\n this.selectedOptionForMultipleSelection.splice(indexOfExistingOption, 1);\n } else {\n this.selectedOptionForMultipleSelection.push(showingData);\n }\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n }\n\n return include;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n if (this.selectConfig.paginateOnScroll === false) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n this.showPlaceholder = true;\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0,\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n this.selectionChange.emit(event.value);\n if (this.selectConfig.multiple) {\n if (!event.value?.length) {\n this.ngControl.control.reset();\n }\n return;\n }\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color'\n : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{showingValue}}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"margin: auto; background: none; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"40px\" height=\"40px\">\n <circle cx=\"50\" cy=\"50\" fill=\"none\" stroke=\"#00AC47\" stroke-width=\"10\" r=\"35\" stroke-dasharray=\"164.93361431346415 56.97787143782138\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" repeatCount=\"indefinite\"\n dur=\"1s\" values=\"0 50 50;360 50 50\" keyTimes=\"0;1\"></animateTransform>\n </circle>\n </svg>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n @if (selectConfig?.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\n\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.needTranslateOptions ? (selectConfig?.changeText[item].text | translate ) : selectConfig?.changeText[item].text}}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"\n $event.stopPropagation();\n $event.preventDefault();\n ngControl.control.reset(null);\n matSelect._onBlur();\n closePanelAndUnsetFocus()\n \"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n @Input() minDate: Date | null = null;\n @Input() clearable = false;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf,\n TranslateModule,\n IconButtonComponent, DateMaskDirective\n ],\n standalone: true\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n @ViewChild('max') max!: ElementRef;\n isOpen = false;\n isSelectingRange = false;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n endDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n })\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n const startDate = value[0];\n const endDate = value[1];\n\n // If this is the start date being selected (matStartDate input)\n if (element === this.min?.nativeElement) {\n // We're starting a new selection process\n this.isSelectingRange = true;\n // Don't emit any event yet\n }\n // If this is the end date being selected (matEndDate input)\n else if (element === this.max?.nativeElement) {\n // We're completing a selection\n this.isSelectingRange = false;\n\n if (startDate === null && endDate === null) {\n this.dateRangeForm.reset();\n this.selectionChange.emit(value);\n } else if (startDate && endDate) {\n this.selectionChange.emit(value);\n }\n }\n\n element.blur();\n }\n\n keyEventHandler(event: KeyboardEvent,value: Array<string | null>, element: any): void {\n if (event.code === 'Enter') {\n this.setDate(value,element)\n }\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input formControlName=\"startDate\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['startDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],min)\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['endDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],max)\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"setDate([null,null], max)\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n #picker\n (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true\"\n ></mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n @Input() loading = false;\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n ></i-tech-button>\n </ng-container>\n\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\">\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, NgxMaskDirective, DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n @ViewChild('dateElement') timeInput!: ElementRef;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n // Track datepicker state\n private focusTimeoutId: any = null;\n private datePickerJustClosed = false;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n ngOnDestroy(): void {\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime, 'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime, 'HH:mm')\n }, { emitEvent: false })\n }\n\n public onDatePickerClosed(): void {\n // Update form value first\n this.setDateTimeValue();\n\n // Mark that the datepicker just closed\n this.datePickerJustClosed = true;\n\n // Clear any existing timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Use a callback that runs outside Angular's change detection\n this.focusTimeoutId = setTimeout(() => {\n // Focus time input\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n\n // Reset flag after enough time\n setTimeout(() => {\n this.datePickerJustClosed = false;\n }, 200);\n }, 100); // Longer delay to let Angular Material finish its work\n }\n\n public setDateTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date, 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit();\n }\n\n public onFocus(event: FocusEvent): void {\n // If datepicker just closed and focus is going to date input, move it to time input\n if (this.datePickerJustClosed) {\n const target = event.target as HTMLElement;\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n\n if (target === dateInput) {\n // Cancel any existing focus timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Set new timeout to focus time input\n this.focusTimeoutId = setTimeout(() => {\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n }, 10);\n\n return;\n }\n }\n\n this.isFocused = true;\n }\n\n public onBlur(event?: FocusEvent): void {\n // Don't handle blur during datepicker transitions\n if (this.datePickerJustClosed) {\n return;\n }\n\n // Check if focus is moving to another element within our component\n setTimeout(() => {\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n const timeInput = this.timeInput?.nativeElement;\n const activeElement = document.activeElement;\n\n if (activeElement !== dateInput && activeElement !== timeInput) {\n this.isFocused = false;\n }\n }, 50);\n }\n}\n","<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AuthInterface, CompaniesEnum, OrganizationInterface } from \"../../../interfaces/auth.interface\";\nimport { NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-company-image',\n imports: [NgIf, UpperCasePipe, SlicePipe],\n standalone: true,\n templateUrl: './company-image.component.html',\n styleUrl: './company-image.component.scss'\n})\nexport class CompanyImageComponent {\n @Input() userData!: AuthInterface;\n @Input() currentCompany!: OrganizationInterface;\n @Input() platform!: CompaniesEnum;\n CompaniesEnum = CompaniesEnum;\n}\n","<div class=\"information pointer\" *ngIf=\"userData && currentCompany\">\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\">\n {{currentCompany.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany.name}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n","import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { NgFor, NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport {\n AuthInterface,\n CompaniesEnum,\n OrganizationInterface,\n SystemRoleInterface\n} from \"../../interfaces/auth.interface\";\nimport { MatMenu, MatMenuModule } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { CompanyImageComponent } from \"./company-image/company-image.component\";\n\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { NavigationLinks } from \"../../interfaces/navigation-link.interface\";\nimport { HttpClient } from \"@angular/common/http\";\n\n@Component({\n selector: 'i-tech-sidebar',\n imports: [NgIf, NgFor, TranslateModule, MatMenu, MatIcon,\n MatMenuModule, CompanyImageComponent, UpperCasePipe, SlicePipe,\n MatRippleModule\n ],\n standalone: true,\n templateUrl: './new-sidebar.component.html',\n styleUrl: './new-sidebar.component.scss'\n})\nexport class NewSidebarComponent implements OnInit, AfterViewInit {\n @HostListener('window:beforeunload')\n canDeactivate(): void {\n localStorage.setItem('SidebarCollapsed', `${this.isCollapsed}`)\n }\n @Output() collapseEvent = new EventEmitter<boolean>();\n @Output() signOutEvent = new EventEmitter<void>();\n @Output() newAuthenticatedResponseEvent = new EventEmitter<AuthInterface>();\n @Input() platform!: CompaniesEnum;\n @Input() navigationLinks!: Array<NavigationLinks>;\n @Input() env!: any;\n @Input() userData!: AuthInterface;\n isCollapsed = false;\n activePage!: string;\n secondLayerActivePage!: string;\n secondLayerOpened = false;\n secondLayerLinks: Array<NavigationLinks> = [];\n currentCompany!:OrganizationInterface;\n allOrganizations: Array<OrganizationInterface> = [];\n activeAndInactivePlatforms: Record<string, Array<{id: CompaniesEnum, name: string, checked?: boolean}>> = {\n active: [],\n inactive: []\n }\n CompaniesEnum = CompaniesEnum\n accessToNewOrganization = false;\n\n constructor(\n private router: Router,\n private http: HttpClient\n ) {}\n\n ngAfterViewInit(): void {\n this.detectActivePage();\n this.detectActiveAndInactiveApps();\n this.isCollapsed = localStorage.getItem('SidebarCollapsed') === 'true' || false;\n this.collapseEvent.emit(this.isCollapsed);\n }\n\n ngOnInit(): void {\n this.getAllCompanies();\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.detectActivePage()\n }\n });\n }\n\n openPlatform(system: CompaniesEnum): void {\n if (system === this.platform) {\n return;\n }\n\n let url;\n if (system === CompaniesEnum.T3) {\n url = this.env.t3\n } else if (system === CompaniesEnum.BROKERAGE) {\n url = this.env.brokerage\n }\n\n if (url) {\n window.location.href = url;\n }\n }\n\n detectActiveAndInactiveApps(): void {\n const allSystems = [{\n id: CompaniesEnum.T3,\n name: 'T3 TMS'\n }, {\n id: CompaniesEnum.TMT,\n name: 'Track My Truck'\n }, {\n id: CompaniesEnum.BROKERAGE,\n name: 'Brokerage'\n }\n ];\n\n allSystems.forEach((system: {id: CompaniesEnum, name: string, checked?: boolean}) => {\n if (this.platform === system.id) {\n system.checked = true\n }\n if (this.userData.systemRoles?.find((role: SystemRoleInterface) => role.system === system.id)) {\n this.activeAndInactivePlatforms['active'].push(system)\n } else {\n this.activeAndInactivePlatforms['inactive'].push(system)\n }\n })\n\n }\n\n switchOrganization(company: OrganizationInterface): void {\n if (company.id === this.currentCompany.id) {\n return;\n }\n this.http.post<AuthInterface>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/companies/${company.id}/login`, {}\n ).subscribe((response: AuthInterface) => {\n this.newAuthenticatedResponseEvent.emit(response)\n })\n }\n\n getAllCompanies(): void {\n this.http.get<Array<OrganizationInterface>>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + '/companies/all'\n ).subscribe((companies: Array<OrganizationInterface>) => {\n const currentCompany = companies.find((company: OrganizationInterface) => company.id === this.userData.companyId)\n if (currentCompany) {\n this.currentCompany = currentCompany;\n }\n this.allOrganizations = companies;\n if (this.platform === CompaniesEnum.ORGANIZATION) {\n this.accessToNewOrganization = this.accessToAddNew();\n }\n })\n }\n\n openLanding(): void {\n window.location.href = this.env.mainDomain;\n }\n\n // Only for organization\n accessToAddNew(): boolean {\n return !(this.allOrganizations.find((company: OrganizationInterface) => company.isMyCompany))\n }\n\n addNewOrganization(): void {\n this.router.navigate(['auth/organization/add'])\n }\n // End Of Only for organization\n\n navigateBack(): void {\n this.router.navigate(['/']);\n }\n\n detectActivePage(): void {\n const page = this.router.url.replace('/', '');\n let link = this.navigationLinks.find((link: NavigationLinks) => page === link.linkTo);\n\n if (!link) {\n const page = this.router.url;\n link = this.navigationLinks.find((link: NavigationLinks) => page.includes(link.linkTo));\n }\n\n if (link) {\n if (link.subPages) {\n this.secondLayerOpened = true;\n this.secondLayerLinks = link.subPages;\n\n const subLink = link.subPages.find((link: NavigationLinks) => page === link.linkTo);\n if (subLink) {\n this.secondLayerActivePage = subLink.pageEnum;\n }\n } else {\n this.secondLayerOpened = false;\n this.secondLayerLinks = [];\n this.secondLayerActivePage = '';\n }\n this.activePage = link.pageEnum;\n }\n }\n\n navigate(link: NavigationLinks): void {\n if (this.activePage === link.linkTo) {\n return;\n }\n\n this.router.navigate([link.linkTo])\n }\n\n changeCollapse(value: boolean): void {\n this.isCollapsed = value;\n this.collapseEvent.emit(value);\n }\n\n privacyPolicyOrTermsCondition(privacy = false): void {\n if (privacy) {\n window.open(this.env.mainDomain + '/privacy-policy', '_blank')\n } else {\n window.open(this.env.mainDomain + '/terms-and-conditions', '_blank')\n }\n }\n\n signOut(): void {\n this.signOutEvent.emit()\n }\n\n openZendeskPage(support = false): void {\n this.http.get<{accessToken: string}>(this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/knowledge-base/jwt-token`)\n .subscribe((res: {accessToken: string}) => {\n const targetUrl = `${this.env.zendeskUrl}/hc/en-us` + (support ? '/requests/new' : '');\n const zendeskUrl = `${this.env.zendeskUrl}/access/jwt?jwt=${res.accessToken}&return_to=${targetUrl}`;\n window.open(zendeskUrl);\n })\n }\n\n manageAccount(): void {\n window.open(this.env.organizationUrl, '_blank')\n }\n\n}\n","<div class=\"main_sidebar\"\n *ngIf=\"navigationLinks && userData\"\n [class.collapsed]=\"isCollapsed\"\n>\n <div class=\"main_sidebar--header\">\n <img class=\"logo pointer\" alt=\"\"\n (click)=\"openLanding()\"\n [src]=\"'/assets/logos/' + platform + '.svg'\">\n <img src=\"/assets/apps.png\" alt=\"\" class=\"pointer\" *ngIf=\"!isCollapsed\"\n [matMenuTriggerFor]=\"matMenu\"\n >\n\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_platforms_menu\">\n <div class=\"menu_title\">\n Active Apps\n </div>\n <div mat-menu-item class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['active']\"\n (click)=\"openPlatform(app.id)\"\n >\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n <img alt=\"\" class=\"ml-auto\" src=\"/assets/selected_organization.svg\"\n *ngIf=\"app.checked\"\n >\n </div>\n <div class=\"divider\"></div>\n <div class=\"menu_title\">\n Inactive Apps\n </div>\n <div class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['inactive']\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n </div>\n </mat-menu>\n </div>\n\n <div class=\"main_sidebar--content\">\n <ng-container *ngIf=\"secondLayerLinks.length\">\n <div class=\"main_sidebar--content--toolbar\"\n (click)=\"navigateBack()\"\n >\n <img alt=\"\" src=\"/assets/back.svg\">\n <span>Back</span>\n </div>\n <div class=\"main_sidebar--content--sub_title\">\n Admin\n </div>\n </ng-container>\n\n <ng-container *ngFor=\"let link of (secondLayerLinks.length ? secondLayerLinks : navigationLinks)\">\n <div class=\"divider\" *ngIf=\"link.hasDivider\"></div>\n <div class=\"main_sidebar--content--link pointer\"\n matRipple\n [class.active]=\"link.pageEnum === activePage || link.pageEnum === secondLayerActivePage\"\n (click)=\"navigate(link)\"\n >\n <div class=\"parent_icon\">\n <img class=\"icon\" alt=\"\"\n [src]=\"'/assets/links/' + platform + '/' + link.image + '.svg'\">\n </div>\n <div class=\"name\">{{link.title | translate}}</div>\n </div>\n </ng-container>\n\n </div>\n\n <div class=\"main_sidebar--footer\" *ngIf=\"userData\">\n <div class=\"main_sidebar--footer--toggle\">\n <img class=\"pointer\" alt=\"\"\n *ngIf=\"!isCollapsed\"\n src=\"/assets/toggle-state-left.svg\"\n (click)=\"changeCollapse(true)\"\n >\n <img class=\"pointer\" alt=\"\"\n *ngIf=\"isCollapsed\"\n src=\"/assets/toggle-state-right.svg\"\n (click)=\"changeCollapse(false)\"\n >\n </div>\n <div class=\"main_sidebar--footer--profile\">\n <i-tech-company-image\n [matMenuTriggerFor]=\"matMenu\"\n [userData]=\"userData\"\n [platform]=\"platform\"\n [currentCompany]=\"currentCompany\"\n ></i-tech-company-image>\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_bottom_menu\">\n <div class=\"top_bar\">\n <img class=\"image\" alt=\"\" [src]=\"userData.image\"\n *ngIf=\"userData.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <div class=\"information\">\n <div class=\"name\">{{userData.firstName}} {{userData.lastName}}</div>\n <div class=\"email\">{{userData.email}}</div>\n </div>\n </div>\n <div mat-menu-item *ngIf=\"platform !== CompaniesEnum.ORGANIZATION\" class=\"standard_menu_item\"\n (click)=\"manageAccount()\">\n Manage Account\n </div>\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION && accessToNewOrganization\"\n class=\"standard_menu_item\"\n (click)=\"addNewOrganization()\">\n Add new organization\n </div>\n\n <ng-container *ngIf=\"allOrganizations.length > 1\">\n <div class=\"divider\" ></div>\n\n <div class=\"switch\">\n <div class=\"switch_title\">\n Switch Organization\n </div>\n <div mat-menu-item class=\"mat_menu_organization\" (click)=\"switchOrganization(organization)\"\n *ngFor=\"let organization of allOrganizations\"\n >\n <div class=\"organization_item_in_menu\">\n <img alt=\"\" class=\"image\" [src]=\"organization.image\"\n *ngIf=\"organization.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{organization.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <span>{{organization.name}}</span>\n </div>\n <img alt=\"\" *ngIf=\"organization.id === currentCompany.id\"\n class=\"isSelected\" src=\"/assets/selected_organization.svg\" >\n </div>\n </div>\n </ng-container>\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"openZendeskPage()\">\n Support Center\n </div>\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"privacyPolicyOrTermsCondition()\">\n Terms And Conditions\n </div>\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"privacyPolicyOrTermsCondition(true)\">\n Privacy Policy\n </div>\n\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"signOut()\">\n Sign out\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/label-type.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/interfaces/auth.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\nexport * from './lib/components/new-sidebar/new-sidebar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i4","i2.ParseDateService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.enum.ts","../../../projects/shared-components/src/lib/interfaces/auth.interface.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\n\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n\n /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled'\n}\n","import { TimezoneInterface } from \"./timezone.interface\";\n\nexport interface AuthInterface {\n id: number,\n uniqueId: string,\n email: string,\n countryCode: string,\n phoneNumber: string,\n userName: string,\n firstName: string,\n lastName: string,\n middleName: string,\n image: string,\n accessToken: string,\n refreshToken: string,\n expiresIn: number,\n companyId?: number,\n timeZone?: TimezoneInterface,\n systemRoles?: Array<SystemRoleInterface>\n}\n\nexport interface OrganizationInterface {\n id: number\n uniqueId: string,\n name: string\n image: string\n isMyCompany: boolean\n systems: Array<CompaniesEnum>\n ownerEmail: string\n}\n\nexport interface SystemRoleInterface {\n roles: Array<{key: RoleEnum}>\n system: CompaniesEnum\n}\n\nexport enum RoleEnum {\n T3_ROLE_DISPATCHER = 'T3_ROLE_DISPATCHER',\n T3_ROLE_ADMIN = 'T3_ROLE_ADMIN',\n ROLE_DISPATCHER = 'ROLE_DISPATCHER',\n ROLE_ADMIN = 'ROLE_ADMIN',\n ROLE_OWNER = 'ROLE_OWNER'\n}\n\nexport enum CompaniesEnum {\n T3 = \"T3\",\n TMT = \"TMT\",\n BROKERAGE = \"BROKERAGE\",\n ORGANIZATION = \"ORGANIZATION\",\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' = 'tonal';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard'].includes(type)\"\n mat-icon-button\n [ngClass]=\"{small: size === 'small', tonal: type === 'tonal', standard: type === 'standard'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: [],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @ViewChild('inputElement', { static: true }) input!: MatInput;\n\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n @Output() valueChangeEmitter = new EventEmitter<any>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = false;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n\n // Subscribe to value changes of the control\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.valueChanges.subscribe(value => {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(value);\n }\n });\n }\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl) {\n this.ngControl.control.reset();\n }\n }\n\n toggleEye(): void {\n this.closed = !this.closed;\n this.input.type = this.closed ? 'password' : 'text';\n }\n\n onValueChange(): void {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(this.ngControl.control.value);\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : inputData.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"inputData.readOnly || ngControl.control.disabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor &&\n (inputData.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !inputData.iconPrefixColor &&\n !(inputData.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput #inputElement\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : inputData.readOnly || ngControl.control.disabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n (keyup)=\"onValueChange()\"\n (change)=\"onValueChange()\"\n >\n\n <textarea matInput\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : inputData.readOnly || ngControl.control.disabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (keyup)=\"onValueChange()\"\n (change)=\"onValueChange()\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visible' : 'visibility_off'\"\n matSuffix\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"toggleEye()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [disabled]=\"inputData.readOnly || ngControl.control.disabled || false\"\n [ngClass]=\"inputData.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() data_cy = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-cy]=\"data_cy\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-cy]=\"data_cy\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { ArrayToStringPipe } from \"../../pipes/array-to-string.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n ArrayToStringPipe,\n NgOptimizedImage,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n\n /**\n * See AutocompleteConfigsInterface for available configurations.\n */\n @Input() set configs(data: AutocompleteConfigsInterface) {\n this.selectConfig = data;\n if (!data) {\n return;\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n paginationData: any = { current: 1, last: 0, searchValue: '' };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n selectedOptionForMultipleSelection: Array<any> = [];\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((newValue: any) => {\n // If we have data and a value\n if (this.data.length && newValue) {\n // Check if the current default value doesn't match the new value\n if (!this.defaultValue || this.defaultValue.id !== newValue) {\n // Reset the block flag to allow updating the value\n this.blockRecallDefaultValueSetter = false;\n this.findAndSetDefaultValueFromData();\n }\n } else if (newValue && !this.data.length) {\n // If we have a value but no data, we need to fetch the data\n this.blockRecallDefaultValueSetter = false;\n this.isNeededForRecall = true;\n this.reCallData();\n }\n });\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n this.paginationData.searchValue = searchText || '';\n }\n\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, this.paginationData?.searchValue || '');\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && this.ngControl.value.length == 1) {\n this.setShowingValue(this.data.find((item) => item.id === this.ngControl.value[0]))\n }\n } else {\n const isDisabled = this.ngControl.disabled;\n if (isDisabled) {\n // TODO Remove after migrating all selects\n // this.ngControl.control.enable();\n // if (!this.ngControl.value && !this.data.length) {\n // this.ngControl.control.disable();\n // return;\n // }\n // this.setDefaultValue();\n // this.ngControl.control.disable();\n } else {\n if (!this.ngControl.value && !this.data) {\n return;\n }\n this.setDefaultValue();\n }\n\n }\n }\n\n setDefaultValue(): void {\n this.defaultValue = this.data.find((item) => item.id === this.ngControl.value);\n this.baseData = this.defaultValue\n if (!this.defaultValue) {\n return;\n }\n this.selectionChange.emit()\n this.setShowingValue(this.defaultValue);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n if (this.searchInput) {\n if (this.selectConfig.multiple) {\n this.toggleShowingDataInSelectedOptionsMultipleCase(showingData);\n } else {\n this.inputFocusOut();\n }\n }\n\n this.setShowingValue(showingData);\n this.showPlaceholder = false;\n }\n\n toggleShowingDataInSelectedOptionsMultipleCase(showingData: any): void {\n const showingDataByJson = JSON.stringify(showingData);\n const indexOfExistingOption = this.selectedOptionForMultipleSelection.findIndex(\n (optionValue: any) => JSON.stringify(optionValue) === showingDataByJson\n )\n if (indexOfExistingOption >= 0) {\n this.selectedOptionForMultipleSelection.splice(indexOfExistingOption, 1);\n } else {\n this.selectedOptionForMultipleSelection.push(showingData);\n }\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n }\n\n return include;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n if (this.selectConfig.paginateOnScroll === false) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n this.showPlaceholder = true;\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0,\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n this.selectionChange.emit(event.value);\n if (this.selectConfig.multiple) {\n if (!event.value?.length) {\n this.ngControl.control.reset();\n }\n return;\n }\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': selectConfig.readOnly || ngControl.control.disabled\n }\"\n [matTooltip]=\"(selectConfig.hover && !ngControl.control.disabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : selectConfig.readOnly || ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || ngControl.control.disabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl}\"\n #searchInput\n [disabled]=\"ngControl.control.disabled || selectConfig.hover\"\n [placeholder]=\"(ngControl.control.disabled || selectConfig.hover) ? '' : 'Search'\"\n (focusout)=\"inputFocusOut()\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n\n <!-- Search Icon -->\n <span class=\"search-icon\">\n <i-tech-icon-button\n class=\"mr-10\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color'\n : 'default-form-icon-color'\"\n *ngIf=\"selectConfig.iconPrefix && !showPlaceholder\"\n [iconName]=\"selectConfig.iconPrefix || ''\"\n [disabled]=\"selectConfig.readOnly || false\"\n matPrefix\n >\n </i-tech-icon-button>\n </span>\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n *ngIf=\"ngControl?.value\"\n >\n {{showingValue}}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control?.value && selectConfig?.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig?.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [disabled]=\"ngControl.control.disabled\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"margin: auto; background: none; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"40px\" height=\"40px\">\n <circle cx=\"50\" cy=\"50\" fill=\"none\" stroke=\"#00AC47\" stroke-width=\"10\" r=\"35\" stroke-dasharray=\"164.93361431346415 56.97787143782138\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" repeatCount=\"indefinite\"\n dur=\"1s\" values=\"0 50 50;360 50 50\" keyTimes=\"0;1\"></animateTransform>\n </circle>\n </svg>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\">\n @if (selectConfig?.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\n\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (mouseup)=\"optionClick(item)\"\n (mousedown)=\"preventDefault($event)\"\n [disabled]=\"selectConfig?.changeText[item].disabled\">\n {{ selectConfig?.needTranslateOptions ? (selectConfig?.changeText[item].text | translate ) : selectConfig?.changeText[item].text}}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (selectConfig.readOnly || ngControl.control.disabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(selectConfig.readOnly || ngControl.control.disabled)\n }\"\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig?.['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.search && selectConfig.clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [disabled]=\"selectConfig.readOnly || false\"\n [ngClass]=\"selectConfig.readOnly || ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"\n $event.stopPropagation();\n $event.preventDefault();\n ngControl.control.reset(null);\n matSelect._onBlur();\n closePanelAndUnsetFocus()\n \"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': selectConfig.readOnly || ngControl.control.disabled,\n 'default-form-icon-color': !(selectConfig.readOnly || ngControl.control.disabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n @Input() minDate: Date | null = null;\n @Input() clearable = false;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : ngControl.control.disabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"ngControl.control.disabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !ngControl.control.disabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n [disabled]=\"ngControl.control.disabled\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"ngControl.control.disabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : ngControl.control.disabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, Validators } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf,\n TranslateModule,\n IconButtonComponent, DateMaskDirective\n ],\n standalone: true\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n @ViewChild('max') max!: ElementRef;\n isOpen = false;\n isSelectingRange = false;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n endDate: new UntypedFormControl('', [Validators.maxLength(10)]),\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n })\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n const startDate = value[0];\n const endDate = value[1];\n\n // If this is the start date being selected (matStartDate input)\n if (element === this.min?.nativeElement) {\n // We're starting a new selection process\n this.isSelectingRange = true;\n // Don't emit any event yet\n }\n // If this is the end date being selected (matEndDate input)\n else if (element === this.max?.nativeElement) {\n // We're completing a selection\n this.isSelectingRange = false;\n\n if (startDate === null && endDate === null) {\n this.dateRangeForm.reset();\n this.selectionChange.emit(value);\n } else if (startDate && endDate) {\n this.selectionChange.emit(value);\n }\n }\n\n element.blur();\n }\n\n keyEventHandler(event: KeyboardEvent,value: Array<string | null>, element: any): void {\n if (event.code === 'Enter') {\n this.setDate(value,element)\n }\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input formControlName=\"startDate\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['startDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],min)\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n dateMask\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [rangeFormControl]=\"dateRangeForm.controls['endDate']\"\n (keydown)=\"keyEventHandler($event,[min.value, max.value || null],max)\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"setDate([null,null], max)\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n #picker\n (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true\"\n ></mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n @Input() loading = false;\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n ></i-tech-button>\n </ng-container>\n\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\">\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color\"\n [ngClass]=\"{bordered: bordered, small: size === 'small', matChipAction: 'pointer'}\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n >\n <div class=\"flex_align_center flex_gap\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg!\"></mat-icon>\n </div>\n </mat-chip>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, NgxMaskDirective, DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n @ViewChild('dateElement') timeInput!: ElementRef;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n // Track datepicker state\n private focusTimeoutId: any = null;\n private datePickerJustClosed = false;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n ngOnDestroy(): void {\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime, 'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime, 'HH:mm')\n }, { emitEvent: false })\n }\n\n public onDatePickerClosed(): void {\n // Update form value first\n this.setDateTimeValue();\n\n // Mark that the datepicker just closed\n this.datePickerJustClosed = true;\n\n // Clear any existing timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Use a callback that runs outside Angular's change detection\n this.focusTimeoutId = setTimeout(() => {\n // Focus time input\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n\n // Reset flag after enough time\n setTimeout(() => {\n this.datePickerJustClosed = false;\n }, 200);\n }, 100); // Longer delay to let Angular Material finish its work\n }\n\n public setDateTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date, 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit();\n }\n\n public onFocus(event: FocusEvent): void {\n // If datepicker just closed and focus is going to date input, move it to time input\n if (this.datePickerJustClosed) {\n const target = event.target as HTMLElement;\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n\n if (target === dateInput) {\n // Cancel any existing focus timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Set new timeout to focus time input\n this.focusTimeoutId = setTimeout(() => {\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n }, 10);\n\n return;\n }\n }\n\n this.isFocused = true;\n }\n\n public onBlur(event?: FocusEvent): void {\n // Don't handle blur during datepicker transitions\n if (this.datePickerJustClosed) {\n return;\n }\n\n // Check if focus is moving to another element within our component\n setTimeout(() => {\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n const timeInput = this.timeInput?.nativeElement;\n const activeElement = document.activeElement;\n\n if (activeElement !== dateInput && activeElement !== timeInput) {\n this.isFocused = false;\n }\n }, 50);\n }\n}\n","<div class=\"date_time_picker_container\"\n *ngIf=\"ngControl?.control\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{'readonly-color': disabled}\">{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AuthInterface, CompaniesEnum, OrganizationInterface } from \"../../../interfaces/auth.interface\";\nimport { NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-company-image',\n imports: [NgIf, UpperCasePipe, SlicePipe],\n standalone: true,\n templateUrl: './company-image.component.html',\n styleUrl: './company-image.component.scss'\n})\nexport class CompanyImageComponent {\n @Input() userData!: AuthInterface;\n @Input() currentCompany!: OrganizationInterface;\n @Input() platform!: CompaniesEnum;\n CompaniesEnum = CompaniesEnum;\n}\n","<div class=\"information pointer\" *ngIf=\"userData && currentCompany\">\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\">\n {{currentCompany.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany.name}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n","import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { NgFor, NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport {\n AuthInterface,\n CompaniesEnum,\n OrganizationInterface,\n SystemRoleInterface\n} from \"../../interfaces/auth.interface\";\nimport { MatMenu, MatMenuModule } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { CompanyImageComponent } from \"./company-image/company-image.component\";\n\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { NavigationLinks } from \"../../interfaces/navigation-link.interface\";\nimport { HttpClient } from \"@angular/common/http\";\n\n@Component({\n selector: 'i-tech-sidebar',\n imports: [NgIf, NgFor, TranslateModule, MatMenu, MatIcon,\n MatMenuModule, CompanyImageComponent, UpperCasePipe, SlicePipe,\n MatRippleModule\n ],\n standalone: true,\n templateUrl: './new-sidebar.component.html',\n styleUrl: './new-sidebar.component.scss'\n})\nexport class NewSidebarComponent implements OnInit, AfterViewInit {\n @HostListener('window:beforeunload')\n canDeactivate(): void {\n localStorage.setItem('SidebarCollapsed', `${this.isCollapsed}`)\n }\n @Output() collapseEvent = new EventEmitter<boolean>();\n @Output() signOutEvent = new EventEmitter<void>();\n @Output() newAuthenticatedResponseEvent = new EventEmitter<AuthInterface>();\n @Input() platform!: CompaniesEnum;\n @Input() navigationLinks!: Array<NavigationLinks>;\n @Input() env!: any;\n @Input() userData!: AuthInterface;\n isCollapsed = false;\n activePage!: string;\n secondLayerActivePage!: string;\n secondLayerOpened = false;\n secondLayerLinks: Array<NavigationLinks> = [];\n currentCompany!:OrganizationInterface;\n allOrganizations: Array<OrganizationInterface> = [];\n activeAndInactivePlatforms: Record<string, Array<{id: CompaniesEnum, name: string, checked?: boolean}>> = {\n active: [],\n inactive: []\n }\n CompaniesEnum = CompaniesEnum\n accessToNewOrganization = false;\n\n constructor(\n private router: Router,\n private http: HttpClient\n ) {}\n\n ngAfterViewInit(): void {\n this.detectActivePage();\n this.detectActiveAndInactiveApps();\n this.isCollapsed = localStorage.getItem('SidebarCollapsed') === 'true' || false;\n this.collapseEvent.emit(this.isCollapsed);\n }\n\n ngOnInit(): void {\n this.getAllCompanies();\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.detectActivePage()\n }\n });\n }\n\n openPlatform(system: CompaniesEnum): void {\n if (system === this.platform) {\n return;\n }\n\n let url;\n if (system === CompaniesEnum.T3) {\n url = this.env.t3\n } else if (system === CompaniesEnum.BROKERAGE) {\n url = this.env.brokerage\n }\n\n if (url) {\n window.location.href = url;\n }\n }\n\n detectActiveAndInactiveApps(): void {\n const allSystems = [{\n id: CompaniesEnum.T3,\n name: 'T3 TMS'\n }, {\n id: CompaniesEnum.TMT,\n name: 'Track My Truck'\n }, {\n id: CompaniesEnum.BROKERAGE,\n name: 'Brokerage'\n }\n ];\n\n allSystems.forEach((system: {id: CompaniesEnum, name: string, checked?: boolean}) => {\n if (this.platform === system.id) {\n system.checked = true\n }\n if (system.id === CompaniesEnum.BROKERAGE) {\n system.name = 'Loadboard'\n }\n if (this.userData.systemRoles?.find((role: SystemRoleInterface) => role.system === system.id)) {\n this.activeAndInactivePlatforms['active'].push(system)\n } else {\n this.activeAndInactivePlatforms['inactive'].push(system)\n }\n })\n\n }\n\n switchOrganization(company: OrganizationInterface): void {\n if (company.id === this.currentCompany.id) {\n return;\n }\n this.http.post<AuthInterface>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/companies/${company.id}/login`, {}\n ).subscribe((response: AuthInterface) => {\n this.newAuthenticatedResponseEvent.emit(response)\n })\n }\n\n getAllCompanies(): void {\n this.http.get<Array<OrganizationInterface>>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + '/companies/all'\n ).subscribe((companies: Array<OrganizationInterface>) => {\n const currentCompany = companies.find((company: OrganizationInterface) => company.id === this.userData.companyId)\n if (currentCompany) {\n this.currentCompany = currentCompany;\n }\n this.allOrganizations = companies;\n if (this.platform === CompaniesEnum.ORGANIZATION) {\n this.accessToNewOrganization = this.accessToAddNew();\n }\n })\n }\n\n openLanding(): void {\n window.location.href = this.env.mainDomain;\n }\n\n // Only for organization\n accessToAddNew(): boolean {\n return !(this.allOrganizations.find((company: OrganizationInterface) => company.isMyCompany))\n }\n\n addNewOrganization(): void {\n this.router.navigate(['auth/organization/add'])\n }\n // End Of Only for organization\n\n navigateBack(): void {\n this.router.navigate(['/']);\n }\n\n detectActivePage(): void {\n const page = this.router.url.replace('/', '');\n let link = this.navigationLinks.find((link: NavigationLinks) => page === link.linkTo);\n\n if (!link) {\n const page = this.router.url;\n link = this.navigationLinks.find((link: NavigationLinks) => page.includes(link.linkTo));\n }\n\n if (link) {\n if (link.subPages) {\n this.secondLayerOpened = true;\n this.secondLayerLinks = link.subPages;\n\n const subLink = link.subPages.find((link: NavigationLinks) => page === link.linkTo);\n if (subLink) {\n this.secondLayerActivePage = subLink.pageEnum;\n }\n } else {\n this.secondLayerOpened = false;\n this.secondLayerLinks = [];\n this.secondLayerActivePage = '';\n }\n this.activePage = link.pageEnum;\n }\n }\n\n navigate(link: NavigationLinks): void {\n if (this.activePage === link.linkTo) {\n return;\n }\n\n this.router.navigate([link.linkTo])\n }\n\n changeCollapse(value: boolean): void {\n this.isCollapsed = value;\n this.collapseEvent.emit(value);\n }\n\n privacyPolicyOrTermsCondition(privacy = false): void {\n if (privacy) {\n window.open(this.env.mainDomain + '/privacy-policy', '_blank')\n } else {\n window.open(this.env.mainDomain + '/terms-and-conditions', '_blank')\n }\n }\n\n signOut(): void {\n this.signOutEvent.emit()\n }\n\n openZendeskPage(support = false): void {\n this.http.get<{accessToken: string}>(this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/knowledge-base/jwt-token`)\n .subscribe((res: {accessToken: string}) => {\n const targetUrl = `${this.env.zendeskUrl}/hc/en-us` + (support ? '/requests/new' : '');\n const zendeskUrl = `${this.env.zendeskUrl}/access/jwt?jwt=${res.accessToken}&return_to=${targetUrl}`;\n window.open(zendeskUrl);\n })\n }\n\n manageAccount(): void {\n window.open(this.env.organizationUrl, '_blank')\n }\n\n}\n","<div class=\"main_sidebar\"\n *ngIf=\"navigationLinks && userData\"\n [class.collapsed]=\"isCollapsed\"\n>\n <div class=\"main_sidebar--header\">\n <img class=\"logo pointer\" alt=\"\"\n (click)=\"openLanding()\"\n [src]=\"'/assets/logos/' + platform + '.svg'\">\n <img src=\"/assets/apps.png\" alt=\"\" class=\"pointer\" *ngIf=\"!isCollapsed\"\n [matMenuTriggerFor]=\"matMenu\"\n >\n\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_platforms_menu\">\n <div class=\"menu_title\">\n Active Apps\n </div>\n <div mat-menu-item class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['active']\"\n (click)=\"openPlatform(app.id)\"\n >\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n <img alt=\"\" class=\"ml-auto\" src=\"/assets/selected_organization.svg\"\n *ngIf=\"app.checked\"\n >\n </div>\n <div class=\"divider\"></div>\n <div class=\"menu_title\">\n Inactive Apps\n </div>\n <div class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['inactive']\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n </div>\n </mat-menu>\n </div>\n\n <div class=\"main_sidebar--content\">\n <ng-container *ngIf=\"secondLayerLinks.length\">\n <div class=\"main_sidebar--content--toolbar\"\n (click)=\"navigateBack()\"\n >\n <img alt=\"\" src=\"/assets/back.svg\">\n <span>Back</span>\n </div>\n <div class=\"main_sidebar--content--sub_title\">\n Admin\n </div>\n </ng-container>\n\n <ng-container *ngFor=\"let link of (secondLayerLinks.length ? secondLayerLinks : navigationLinks)\">\n <div class=\"divider\" *ngIf=\"link.hasDivider\"></div>\n <div class=\"main_sidebar--content--link pointer\"\n matRipple\n [class.active]=\"link.pageEnum === activePage || link.pageEnum === secondLayerActivePage\"\n (click)=\"navigate(link)\"\n >\n <div class=\"parent_icon\">\n <img class=\"icon\" alt=\"\"\n [src]=\"'/assets/links/' + platform + '/' + link.image + '.svg'\">\n </div>\n <div class=\"name\">{{link.title | translate}}</div>\n </div>\n </ng-container>\n\n </div>\n\n <div class=\"main_sidebar--footer\" *ngIf=\"userData\">\n <div class=\"main_sidebar--footer--toggle\">\n <img class=\"pointer\" alt=\"\"\n *ngIf=\"!isCollapsed\"\n src=\"/assets/toggle-state-left.svg\"\n (click)=\"changeCollapse(true)\"\n >\n <img class=\"pointer\" alt=\"\"\n *ngIf=\"isCollapsed\"\n src=\"/assets/toggle-state-right.svg\"\n (click)=\"changeCollapse(false)\"\n >\n </div>\n <div class=\"main_sidebar--footer--profile\">\n <i-tech-company-image\n [matMenuTriggerFor]=\"matMenu\"\n [userData]=\"userData\"\n [platform]=\"platform\"\n [currentCompany]=\"currentCompany\"\n ></i-tech-company-image>\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_bottom_menu\">\n <div class=\"top_bar\">\n <img class=\"image\" alt=\"\" [src]=\"userData.image\"\n *ngIf=\"userData.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <div class=\"information\">\n <div class=\"name\">{{userData.firstName}} {{userData.lastName}}</div>\n <div class=\"email\">{{userData.email}}</div>\n </div>\n </div>\n <div mat-menu-item *ngIf=\"platform !== CompaniesEnum.ORGANIZATION\" class=\"standard_menu_item\"\n (click)=\"manageAccount()\">\n Manage Account\n </div>\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION && accessToNewOrganization\"\n class=\"standard_menu_item\"\n (click)=\"addNewOrganization()\">\n Add new organization\n </div>\n\n <ng-container *ngIf=\"allOrganizations.length > 1\">\n <div class=\"divider\" ></div>\n\n <div class=\"switch\">\n <div class=\"switch_title\">\n Switch Organization\n </div>\n <div mat-menu-item class=\"mat_menu_organization\" (click)=\"switchOrganization(organization)\"\n *ngFor=\"let organization of allOrganizations\"\n >\n <div class=\"organization_item_in_menu\">\n <img alt=\"\" class=\"image\" [src]=\"organization.image\"\n *ngIf=\"organization.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{organization.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <span>{{organization.name}}</span>\n </div>\n <img alt=\"\" *ngIf=\"organization.id === currentCompany.id\"\n class=\"isSelected\" src=\"/assets/selected_organization.svg\" >\n </div>\n </div>\n </ng-container>\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"openZendeskPage()\">\n Support Center\n </div>\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"privacyPolicyOrTermsCondition()\">\n Terms And Conditions\n </div>\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"privacyPolicyOrTermsCondition(true)\">\n Privacy Policy\n </div>\n\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"signOut()\">\n Sign out\n </div>\n </mat-menu>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/label-type.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/interfaces/auth.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\nexport * from './lib/components/new-sidebar/new-sidebar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i4","i2.ParseDateService"],"mappings":"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"}
|