Files
talenttic-crm-app/src/app/layouts/auth-layout/auth-layout.component.ts
2023-04-25 09:17:32 +01:00

213 lines
6.6 KiB
TypeScript

import { Component, OnInit, OnDestroy } from '@angular/core';
import { Router } from '@angular/router';
import { ROUTES } from '../../components/sidebar/sidebar.component';
import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';
@Component({
selector: 'app-auth-layout',
templateUrl: './auth-layout.component.html',
styleUrls: ['./auth-layout.component.scss']
})
export class AuthLayoutComponent implements OnInit, OnDestroy {
public menuItems: any[];
test: Date = new Date();
closeResult: string;
public sidebarColor: string = "red";
public isCollapsed = true;
mobile_menu_visible: any = 0;
private toggleButton: any;
private sidebarVisible: boolean;
constructor(private router: Router, private modalService: NgbModal) { }
changeSidebarColor(color){
var sidebar = document.getElementsByClassName('sidebar')[0];
var mainPanel = document.getElementsByClassName('main-panel')[0];
this.sidebarColor = color;
if(sidebar != undefined){
sidebar.setAttribute('data',color);
}
if(mainPanel != undefined){
mainPanel.setAttribute('data',color);
}
}
changeDashboardColor(color){
var body = document.getElementsByTagName('body')[0];
if (body && color === 'white-content') {
body.classList.add(color);
}
else if(body.classList.contains('white-content')) {
body.classList.remove('white-content');
}
}
// function that adds color white/transparent to the navbar on resize (this is for the collapse)
updateColor = () => {
var navbar = document.getElementsByClassName('navbar')[0];
if (window.innerWidth < 993 && !this.isCollapsed) {
navbar.classList.add('bg-white');
navbar.classList.remove('navbar-transparent');
} else {
navbar.classList.remove('bg-white');
navbar.classList.add('navbar-transparent');
}
};
ngOnInit() {
var navbar = document.getElementsByClassName('navbar')[0];
window.addEventListener("resize", this.updateColor);
this.toggleButton = navbar.getElementsByClassName("navbar-toggler")[0];
this.router.events.subscribe(event => {
this.sidebarClose();
var $layer: any = document.getElementsByClassName("close-layer")[0];
if ($layer) {
$layer.remove();
this.mobile_menu_visible = 0;
}
});
this.menuItems = ROUTES.filter(menuItem => menuItem);
// on this page, we need on the body tag the classes .rtl and .menu-on-right
document.body.classList.add("rtl", "menu-on-right");
// we also need the rtl bootstrap
// so we add it dynamically to the head
let head = document.head;
let link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.id = "rtl-id";
link.href =
"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-rtl/3.4.0/css/bootstrap-rtl.css";
head.appendChild(link);
}
ngOnDestroy() {
// when we exit this page, we need to delete the classes .rtl and .menu-on-right
// from the body tag
document.body.classList.remove("rtl", "menu-on-right");
// we also need to delete the rtl bootstrap, so it does not break the other pages
// that do not make use of rtl
document.getElementById("rtl-id").remove();
}
collapse() {
this.isCollapsed = !this.isCollapsed;
const navbar = document.getElementsByTagName("nav")[0];
if (!this.isCollapsed) {
navbar.classList.remove("navbar-transparent");
navbar.classList.add("bg-white");
} else {
navbar.classList.add("navbar-transparent");
navbar.classList.remove("bg-white");
}
}
sidebarOpen() {
const toggleButton = this.toggleButton;
const mainPanel = <HTMLElement>(
document.getElementsByClassName("main-panel")[0]
);
const html = document.getElementsByTagName("html")[0];
if (window.innerWidth < 991) {
mainPanel.style.position = "fixed";
}
setTimeout(function() {
toggleButton.classList.add("toggled");
}, 500);
html.classList.add("nav-open");
this.sidebarVisible = true;
}
sidebarClose() {
const html = document.getElementsByTagName("html")[0];
this.toggleButton.classList.remove("toggled");
const mainPanel = <HTMLElement>(
document.getElementsByClassName("main-panel")[0]
);
if (window.innerWidth < 991) {
setTimeout(function() {
mainPanel.style.position = "";
}, 500);
}
this.sidebarVisible = false;
html.classList.remove("nav-open");
}
sidebarToggle() {
// const toggleButton = this.toggleButton;
// const html = document.getElementsByTagName('html')[0];
var $toggle = document.getElementsByClassName("navbar-toggler")[0];
if (this.sidebarVisible === false) {
this.sidebarOpen();
} else {
this.sidebarClose();
}
const html = document.getElementsByTagName("html")[0];
if (this.mobile_menu_visible == 1) {
// $('html').removeClass('nav-open');
html.classList.remove("nav-open");
if ($layer) {
$layer.remove();
}
setTimeout(function() {
$toggle.classList.remove("toggled");
}, 400);
this.mobile_menu_visible = 0;
} else {
setTimeout(function() {
$toggle.classList.add("toggled");
}, 430);
var $layer = document.createElement("div");
$layer.setAttribute("class", "close-layer");
if (html.querySelectorAll(".main-panel")) {
document.getElementsByClassName("main-panel")[0].appendChild($layer);
} else if (html.classList.contains("off-canvas-sidebar")) {
document
.getElementsByClassName("wrapper-full-page")[0]
.appendChild($layer);
}
setTimeout(function() {
$layer.classList.add("visible");
}, 100);
$layer.onclick = function() {
//asign a function
html.classList.remove("nav-open");
this.mobile_menu_visible = 0;
$layer.classList.remove("visible");
setTimeout(function() {
$layer.remove();
$toggle.classList.remove("toggled");
}, 400);
}.bind(this);
html.classList.add("nav-open");
this.mobile_menu_visible = 1;
}
}
open(content) {
this.modalService.open(content, {windowClass: 'modal-search'}).result.then((result) => {
this.closeResult = `Closed with: ${result}`;
}, (reason) => {
this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
});
}
private getDismissReason(reason: any): string {
if (reason === ModalDismissReasons.ESC) {
return 'by pressing ESC';
} else if (reason === ModalDismissReasons.BACKDROP_CLICK) {
return 'by clicking on a backdrop';
} else {
return `with: ${reason}`;
}
}
}