import {Component, ViewEncapsulation} from "@angular/core";
import {NgFor, NgIf, NgClass} from "@angular/common";
import {RippleEffect} from "../ripple-effect/RippleEffect";
import {CoreNavegationDrawerService} from "./core-navegation-drawer.service";
import {CoreIcon} from "../core-icon/core-icon";
import {CoreImage} from "../core-image/CoreImage";
import {IUsuario} from "../../services/OdisseiaDataBase/IUsuario";
import {IMenuItem} from "../../models/ITopBar";
import {IDrawerGroup} from "../../models/IDrawerGroup";

@Component(
    {
        selector: 'core-navegation-drawer',
        encapsulation: ViewEncapsulation.None,
        templateUrl: "node_modules/bia-framework/components/core-navegation-drawer/core-navegation-drawer.template.html",
        styleUrls: ["node_modules/bia-framework/components/core-navegation-drawer/core-navegation-drawer.style.css"],
        directives: [CoreIcon, RippleEffect, NgFor, NgIf, CoreImage, NgClass]
    }
)
export class CoreNavegationDrawer
{
    private currentUser:IUsuario = null;
    private isVisible:boolean;
    private menuGroups:IDrawerGroup[] = [];
    private selectedIndex:number;

    constructor(private navegationDrawerService:CoreNavegationDrawerService)
    {
        this.navegationDrawerService.showDrawerSubject.subscribe(()=> this.isVisible = true);
        this.navegationDrawerService.hideDrawerSubject.subscribe(()=> this.isVisible = false);
        this.navegationDrawerService.menuGroupsSubject.subscribe((newGroup)=> this.addMenuItem(newGroup));
        this.navegationDrawerService.usuarioSubject.subscribe((user:IUsuario)=> this.currentUser = user);

    }

    public selected = (item:IMenuItem):void =>
    {
        if(item.Click)
            item.Click();
    };


    private addMenuItem = (newMenuGroup:IDrawerGroup):void =>
    {
        this.menuGroups = [...this.menuGroups, newMenuGroup];
    };


}