mirror of
				https://github.com/richard-loafle/fuse-angular.git
				synced 2025-11-04 09:23:35 +00:00 
			
		
		
		
	(Apps) Moved the apps to the new page layouts and replaced MatSidenav with FuseSidebar on majority of them
This commit is contained in:
		
							parent
							
								
									436bd0aa91
								
							
						
					
					
						commit
						a87e68251e
					
				@ -1,7 +1,7 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
import { MatButtonModule, MatFormFieldModule, MatIconModule, MatInputModule, MatSelectModule, MatSidenavModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatFormFieldModule, MatIconModule, MatInputModule, MatSelectModule } from '@angular/material';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ import { AcademyCoursesComponent } from 'app/main/apps/academy/courses/courses.c
 | 
			
		||||
import { AcademyCourseComponent } from 'app/main/apps/academy/course/course.component';
 | 
			
		||||
import { AcademyCoursesService } from 'app/main/apps/academy/courses.service';
 | 
			
		||||
import { AcademyCourseService } from 'app/main/apps/academy/course.service';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const routes = [
 | 
			
		||||
@ -45,9 +46,9 @@ const routes = [
 | 
			
		||||
        MatIconModule,
 | 
			
		||||
        MatInputModule,
 | 
			
		||||
        MatSelectModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers   : [
 | 
			
		||||
        AcademyCoursesService,
 | 
			
		||||
 | 
			
		||||
@ -1,100 +1,97 @@
 | 
			
		||||
<div id="academy-course" class="page-layout simple left-sidenav">
 | 
			
		||||
<div id="academy-course" class="page-layout simple left-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar" name="academy-course-left-sidebar-1" position="left" lockedOpen="gt-md">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav" position="start" opened="true" mode="side"
 | 
			
		||||
                     fuseMatSidenavHelper="academy-left-sidenav" mat-is-locked-open="gt-md">
 | 
			
		||||
        <!-- SIDEBAR CONTENT -->
 | 
			
		||||
        <div class="content" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
            <div class="sidenav-content" fusePerfectScrollbar>
 | 
			
		||||
            <div class="steps">
 | 
			
		||||
 | 
			
		||||
                <div class="steps">
 | 
			
		||||
 | 
			
		||||
                    <div class="step"
 | 
			
		||||
                         *ngFor="let step of course.steps; let i = index; let last = last; let first = first"
 | 
			
		||||
                         (click)="gotoStep(i)"
 | 
			
		||||
                         [ngClass]="{'current': currentStep === i, 'completed': currentStep > i, 'last': last, 'first': first}">
 | 
			
		||||
                        <div class="index">
 | 
			
		||||
                            <span>{{i + 1}}</span>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div class="title">{{step.title}}</div>
 | 
			
		||||
                <div class="step"
 | 
			
		||||
                     *ngFor="let step of course.steps; let i = index; let last = last; let first = first"
 | 
			
		||||
                     (click)="gotoStep(i)"
 | 
			
		||||
                     [ngClass]="{'current': currentStep === i, 'completed': currentStep > i, 'last': last, 'first': first}">
 | 
			
		||||
                    <div class="index">
 | 
			
		||||
                        <span>{{i + 1}}</span>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div class="title">{{step.title}}</div>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center">
 | 
			
		||||
 | 
			
		||||
            <!-- HEADER -->
 | 
			
		||||
            <div class="header mat-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                <button mat-icon-button class="mr-16 sidenav-toggle"
 | 
			
		||||
                        fuseMatSidenavToggler="academy-left-sidenav" fxHide.gt-md>
 | 
			
		||||
                    <mat-icon>menu</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <button mat-icon-button class="mr-16" [routerLink]="'/apps/academy/courses'">
 | 
			
		||||
                    <mat-icon>arrow_back</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <div>
 | 
			
		||||
                    <h2>{{course.title}}</h2>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div id="course-content" class="content">
 | 
			
		||||
 | 
			
		||||
                <ng-container *ngFor="let step of course.steps; let i = index;">
 | 
			
		||||
 | 
			
		||||
                    <div class="course-step" fusePerfectScrollbar
 | 
			
		||||
                         *ngIf="currentStep === i"
 | 
			
		||||
                         [@slideIn]="animationDirection">
 | 
			
		||||
 | 
			
		||||
                        <div id="course-step-content" class="course-step-content" [innerHTML]="step.content"></div>
 | 
			
		||||
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                </ng-container>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
            <div class="step-navigation">
 | 
			
		||||
 | 
			
		||||
                <button mat-fab class="previous mat-accent white-fg"
 | 
			
		||||
                        (click)="gotoPreviousStep()"
 | 
			
		||||
                        [disabled]="currentStep === 0"
 | 
			
		||||
                        [fxHide]="currentStep === 0">
 | 
			
		||||
                    <mat-icon>chevron_left</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <button mat-fab class="next mat-accent white-fg"
 | 
			
		||||
                        (click)="gotoNextStep()"
 | 
			
		||||
                        [disabled]="currentStep === course.totalSteps - 1"
 | 
			
		||||
                        [fxHide]="currentStep === course.totalSteps - 1">
 | 
			
		||||
                    <mat-icon>chevron_right</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <button mat-fab class="done mat-green-600-bg"
 | 
			
		||||
                        routerLink="/apps/academy/courses"
 | 
			
		||||
                        [disabled]="currentStep !== course.totalSteps - 1"
 | 
			
		||||
                        [fxShow]="currentStep === course.totalSteps - 1">
 | 
			
		||||
                    <mat-icon>check</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
        <!-- / SIDEBAR CONTENT -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
    <!-- CENTER -->
 | 
			
		||||
    <div class="center">
 | 
			
		||||
 | 
			
		||||
        <!-- HEADER -->
 | 
			
		||||
        <div class="header mat-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <button mat-icon-button class="sidebar-toggle mr-16" fxHide.gt-md
 | 
			
		||||
                    (click)="toggleSidebar('academy-course-left-sidebar-1')">
 | 
			
		||||
                <mat-icon>menu</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
            <button mat-icon-button class="mr-16" [routerLink]="'/apps/academy/courses'">
 | 
			
		||||
                <mat-icon>arrow_back</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
            <div>
 | 
			
		||||
                <h2>{{course.title}}</h2>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
        <!-- CONTENT -->
 | 
			
		||||
        <div id="course-content" class="content">
 | 
			
		||||
 | 
			
		||||
            <ng-container *ngFor="let step of course.steps; let i = index;">
 | 
			
		||||
 | 
			
		||||
                <div class="course-step" fusePerfectScrollbar
 | 
			
		||||
                     *ngIf="currentStep === i"
 | 
			
		||||
                     [@slideIn]="animationDirection">
 | 
			
		||||
 | 
			
		||||
                    <div id="course-step-content" class="course-step-content" [innerHTML]="step.content"></div>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </ng-container>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
        <div class="step-navigation">
 | 
			
		||||
 | 
			
		||||
            <button mat-fab class="previous mat-accent white-fg"
 | 
			
		||||
                    (click)="gotoPreviousStep()"
 | 
			
		||||
                    [disabled]="currentStep === 0"
 | 
			
		||||
                    [fxHide]="currentStep === 0">
 | 
			
		||||
                <mat-icon>chevron_left</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
            <button mat-fab class="next mat-accent white-fg"
 | 
			
		||||
                    (click)="gotoNextStep()"
 | 
			
		||||
                    [disabled]="currentStep === course.totalSteps - 1"
 | 
			
		||||
                    [fxHide]="currentStep === course.totalSteps - 1">
 | 
			
		||||
                <mat-icon>chevron_right</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
            <button mat-fab class="done mat-green-600-bg"
 | 
			
		||||
                    routerLink="/apps/academy/courses"
 | 
			
		||||
                    [disabled]="currentStep !== course.totalSteps - 1"
 | 
			
		||||
                    [fxShow]="currentStep === course.totalSteps - 1">
 | 
			
		||||
                <mat-icon>check</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -2,19 +2,7 @@
 | 
			
		||||
 | 
			
		||||
#academy-course {
 | 
			
		||||
 | 
			
		||||
    .mat-drawer-container {
 | 
			
		||||
        flex: 1 !important;
 | 
			
		||||
 | 
			
		||||
        > .mat-drawer-content {
 | 
			
		||||
            flex: 1 !important;
 | 
			
		||||
 | 
			
		||||
            @include media-breakpoint-up('lg') {
 | 
			
		||||
                z-index: 52;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sidenav {
 | 
			
		||||
    .sidebar {
 | 
			
		||||
 | 
			
		||||
        .steps {
 | 
			
		||||
            padding: 16px 0;
 | 
			
		||||
@ -140,6 +128,7 @@
 | 
			
		||||
 | 
			
		||||
    .center {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
 | 
			
		||||
        .header {
 | 
			
		||||
            height: 72px;
 | 
			
		||||
@ -148,10 +137,8 @@
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .content {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            position: relative;
 | 
			
		||||
            overflow: hidden;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            display: flex;
 | 
			
		||||
            background: mat-color($mat-grey, 200);
 | 
			
		||||
 | 
			
		||||
            .course-step {
 | 
			
		||||
@ -163,6 +150,10 @@
 | 
			
		||||
                padding: 48px;
 | 
			
		||||
                overflow: auto;
 | 
			
		||||
 | 
			
		||||
                &.ng-animating {
 | 
			
		||||
                    overflow: hidden;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                @media (max-width: 720px) {
 | 
			
		||||
                    padding: 0 0 120px 0;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ import { Subject } from 'rxjs';
 | 
			
		||||
import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { FusePerfectScrollbarDirective } from '@fuse/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
 | 
			
		||||
import { AcademyCourseService } from 'app/main/apps/academy/course.service';
 | 
			
		||||
@ -32,10 +33,12 @@ export class AcademyCourseComponent implements OnInit, OnDestroy, AfterViewInit
 | 
			
		||||
     *
 | 
			
		||||
     * @param {AcademyCourseService} _academyCourseService
 | 
			
		||||
     * @param {ChangeDetectorRef} _changeDetectorRef
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _academyCourseService: AcademyCourseService,
 | 
			
		||||
        private _changeDetectorRef: ChangeDetectorRef
 | 
			
		||||
        private _changeDetectorRef: ChangeDetectorRef,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        // Set the defaults
 | 
			
		||||
@ -146,4 +149,14 @@ export class AcademyCourseComponent implements OnInit, OnDestroy, AfterViewInit
 | 
			
		||||
        // Decrease the current step
 | 
			
		||||
        this.currentStep--;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,14 @@
 | 
			
		||||
<div id="academy-courses" class="page-layout simple" fusePerfectScrollbar>
 | 
			
		||||
<div id="academy-courses" class="page-layout simple">
 | 
			
		||||
 | 
			
		||||
    <!-- HEADER -->
 | 
			
		||||
    <div class="header mat-accent-bg p-16 p-sm-24" fxLayout="column" fxLayoutAlign="center center">
 | 
			
		||||
 | 
			
		||||
        <div class="hero-text">
 | 
			
		||||
            <mat-icon class="hero-icon">school</mat-icon>
 | 
			
		||||
            <h1>WELCOME TO ACADEMY</h1>
 | 
			
		||||
            <h3>
 | 
			
		||||
            <h1 [@animate]="{value:'*',params:{delay:'100ms', y:'25px'}}">
 | 
			
		||||
                WELCOME TO ACADEMY
 | 
			
		||||
            </h1>
 | 
			
		||||
            <h3 [@animate]="{value:'*',params:{delay:'100ms', y:'25px'}}">
 | 
			
		||||
                Our courses will step you through the process of building a small application, or adding a new feature
 | 
			
		||||
                to an existing application.
 | 
			
		||||
            </h3>
 | 
			
		||||
@ -46,8 +48,7 @@
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div class="courses" fxLayout="row wrap" fxLayoutAlign="center" [@animateStagger]="{value:'50'}"
 | 
			
		||||
                 *fuseIfOnDom>
 | 
			
		||||
            <div class="courses" fxLayout="row wrap" fxLayoutAlign="center" [@animateStagger]="{value:'50'}">
 | 
			
		||||
 | 
			
		||||
                <div class="course" *ngFor="let course of filteredCourses" fxFlex="100" fxFlex.gt-xs="50"
 | 
			
		||||
                     fxFlex.gt-sm="33" [ngClass]="course.category" [@animate]="{value:'*',params:{y:'100%'}}">
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="calendar" class="page-layout simple fullwidth" fusePerfectScrollbar>
 | 
			
		||||
<div id="calendar" class="page-layout simple fullwidth">
 | 
			
		||||
 | 
			
		||||
    <!-- HEADER -->
 | 
			
		||||
    <div class="header p-16 p-sm-24" [ngClass]="viewDate | date:'MMM'">
 | 
			
		||||
@ -8,8 +8,12 @@
 | 
			
		||||
            <div class="header-top" fxLayout="row" fxLayoutAlign="space-between center" fxLayout.xs="column">
 | 
			
		||||
 | 
			
		||||
                <div class="logo mb-16 mb-sm-0" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-icon class="logo-icon" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">today</mat-icon>
 | 
			
		||||
                    <span class="logo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Calendar</span>
 | 
			
		||||
                    <mat-icon class="logo-icon" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                        today
 | 
			
		||||
                    </mat-icon>
 | 
			
		||||
                    <span class="logo-text" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                        Calendar
 | 
			
		||||
                    </span>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <!-- TOOLBAR -->
 | 
			
		||||
@ -44,7 +48,7 @@
 | 
			
		||||
 | 
			
		||||
            <!-- HEADER BOTTOM -->
 | 
			
		||||
            <div class="header-bottom" fxLayout="row" fxLayoutAlign="center center"
 | 
			
		||||
                 *fuseIfOnDom [@animate]="{value:'*',params:{delay:'150ms'}}">
 | 
			
		||||
                 [@animate]="{value:'*',params:{delay:'150ms'}}">
 | 
			
		||||
 | 
			
		||||
                <button mat-icon-button class="arrow"
 | 
			
		||||
                        mwlCalendarPreviousView
 | 
			
		||||
@ -73,7 +77,7 @@
 | 
			
		||||
 | 
			
		||||
        <!-- ADD EVENT BUTTON -->
 | 
			
		||||
        <button mat-fab class="add-event-button mat-warn" (click)="addEvent()" aria-label="Add event"
 | 
			
		||||
                *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">
 | 
			
		||||
                [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">
 | 
			
		||||
            <mat-icon>add</mat-icon>
 | 
			
		||||
        </button>
 | 
			
		||||
        <!-- / ADD EVENT BUTTON -->
 | 
			
		||||
@ -81,7 +85,7 @@
 | 
			
		||||
    <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content" fusePerfectScrollbar *fuseIfOnDom [@animate]="{value:'*',params:{delay:'200ms',y:'50px'}}">
 | 
			
		||||
    <div class="content" fusePerfectScrollbar [@animate]="{value:'*',params:{delay:'200ms',y:'50px'}}">
 | 
			
		||||
        <div [ngSwitch]="view">
 | 
			
		||||
            <mwl-calendar-month-view
 | 
			
		||||
                *ngSwitchCase="'month'"
 | 
			
		||||
 | 
			
		||||
@ -192,8 +192,6 @@
 | 
			
		||||
 | 
			
		||||
#calendar {
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    overflow-x: hidden;
 | 
			
		||||
    overflow-y: auto;
 | 
			
		||||
 | 
			
		||||
    .header {
 | 
			
		||||
        height: 200px;
 | 
			
		||||
 | 
			
		||||
@ -1,19 +1,19 @@
 | 
			
		||||
<div fxFlex fxLayout="column" fxLayoutAlign="center center">
 | 
			
		||||
 | 
			
		||||
    <div class="big-circle mat-elevation-z1 app-logo" fxLayout="column" fxLayoutAlign="center center"
 | 
			
		||||
         *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
         [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
 | 
			
		||||
        <mat-icon class="s-64 s-mat-128 mat-accent">chat</mat-icon>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <span class="app-title my-24" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',y:'25px'}}">Chat App</span>
 | 
			
		||||
    <span class="app-title my-24" [@animate]="{value:'*',params:{delay:'100ms',y:'25px'}}">Chat App</span>
 | 
			
		||||
 | 
			
		||||
    <span fxHide fxShow.gt-md class="app-message" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'200ms',y:'50px'}}">
 | 
			
		||||
    <span fxHide fxShow.gt-md class="app-message" [@animate]="{value:'*',params:{delay:'200ms',y:'50px'}}">
 | 
			
		||||
        Select contact to start the chat!..
 | 
			
		||||
    </span>
 | 
			
		||||
 | 
			
		||||
    <button mat-raised-button fxHide.gt-md class="" fuseMatSidenavToggler="chat-left-sidenav">
 | 
			
		||||
    <button mat-raised-button fxHide.gt-md fuseMatSidenavToggler="chat-left-sidenav">
 | 
			
		||||
        Select contact to start the chat!..
 | 
			
		||||
    </button>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">
 | 
			
		||||
<div id="contacts" class="page-layout simple left-sidebar inner-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- HEADER -->
 | 
			
		||||
    <div class="header mat-accent-bg p-16 p-sm-24" fxLayout="column" fxLayoutAlign="start start"
 | 
			
		||||
@ -7,15 +7,18 @@
 | 
			
		||||
        <!-- APP TITLE -->
 | 
			
		||||
        <div fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <button mat-icon-button class="sidenav-toggle mr-12"
 | 
			
		||||
                    fuseMatSidenavToggler="contacts-main-sidenav"
 | 
			
		||||
                    fxHide.gt-md>
 | 
			
		||||
            <button mat-icon-button class="sidebar-toggle mr-12" fxHide.gt-md
 | 
			
		||||
                    (click)="toggleSidebar('contacts-main-sidebar')">
 | 
			
		||||
                <mat-icon>menu</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
 | 
			
		||||
            <div class="logo" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <mat-icon class="logo-icon mr-16" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">account_box</mat-icon>
 | 
			
		||||
                <span class="logo-text h1" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Contacts</span>
 | 
			
		||||
                <mat-icon class="logo-icon mr-16"
 | 
			
		||||
                          [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">account_box
 | 
			
		||||
                </mat-icon>
 | 
			
		||||
                <span class="logo-text h1" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                    Contacts
 | 
			
		||||
                </span>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
@ -39,38 +42,41 @@
 | 
			
		||||
    <selected-bar class="mat-accent-600-bg" *ngIf="hasSelectedContacts" [@slideInTop]></selected-bar>
 | 
			
		||||
    <!-- / SELECTED BAR -->
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav" position="start" opened="true" mode="side"
 | 
			
		||||
                     fuseMatSidenavHelper="contacts-main-sidenav" mat-is-locked-open="gt-sm">
 | 
			
		||||
        <!-- SIDEBAR -->
 | 
			
		||||
        <fuse-sidebar class="sidebar" name="contacts-main-sidebar" position="left" lockedOpen="gt-sm">
 | 
			
		||||
 | 
			
		||||
            <contacts-main-sidenav *fuseIfOnDom [@animate]="{value:'*'}"></contacts-main-sidenav>
 | 
			
		||||
            <!-- SIDEBAR CONTENT -->
 | 
			
		||||
            <div class="content" fusePerfectScrollbar>
 | 
			
		||||
                <contacts-main-sidebar [@animate]="{value:'*'}"></contacts-main-sidebar>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / SIDEBAR CONTENT -->
 | 
			
		||||
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
        </fuse-sidebar>
 | 
			
		||||
        <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center p-24 pb-56 pr-sm-92" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div class="content mat-white-bg mat-elevation-z4">
 | 
			
		||||
 | 
			
		||||
                <contacts-contact-list></contacts-contact-list>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CONTENT-->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<!-- ADD CONTACT BUTTON -->
 | 
			
		||||
<button mat-fab class="mat-accent-bg" id="add-contact-button" (click)="newContact()" aria-label="add contact"
 | 
			
		||||
        *fuseIfOnDom [@animate]="{value:'*', params:{delay:'300ms',scale:'.2'}}">
 | 
			
		||||
        [@animate]="{value:'*', params:{delay:'300ms',scale:'.2'}}">
 | 
			
		||||
    <mat-icon>person_add</mat-icon>
 | 
			
		||||
</button>
 | 
			
		||||
<!-- / ADD CONTACT BUTTON -->
 | 
			
		||||
 | 
			
		||||
@ -2,5 +2,12 @@
 | 
			
		||||
 | 
			
		||||
    .content {
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
 | 
			
		||||
        .sidebar {
 | 
			
		||||
 | 
			
		||||
            &:not(.locked-open) {
 | 
			
		||||
                background: white;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -5,6 +5,7 @@ import { Subject } from 'rxjs';
 | 
			
		||||
import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
import { ContactsService } from 'app/main/apps/contacts/contacts.service';
 | 
			
		||||
import { ContactsContactFormDialogComponent } from 'app/main/apps/contacts/contact-form/contact-form.component';
 | 
			
		||||
@ -29,10 +30,12 @@ export class ContactsComponent implements OnInit, OnDestroy
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {ContactsService} _contactsService
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     * @param {MatDialog} _matDialog
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _contactsService: ContactsService,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService,
 | 
			
		||||
        private _matDialog: MatDialog
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
@ -105,4 +108,14 @@ export class ContactsComponent implements OnInit, OnDestroy
 | 
			
		||||
                this._contactsService.updateContact(response.getRawValue());
 | 
			
		||||
            });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,16 +2,16 @@ import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { CdkTableModule } from '@angular/cdk/table';
 | 
			
		||||
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDatepickerModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSidenavModule, MatTableModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDatepickerModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatTableModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseConfirmDialogModule } from '@fuse/components';
 | 
			
		||||
import { FuseConfirmDialogModule, FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
import { ContactsComponent } from 'app/main/apps/contacts/contacts.component';
 | 
			
		||||
import { ContactsService } from 'app/main/apps/contacts/contacts.service';
 | 
			
		||||
import { ContactsContactListComponent } from 'app/main/apps/contacts/contact-list/contact-list.component';
 | 
			
		||||
import { ContactsSelectedBarComponent } from 'app/main/apps/contacts/selected-bar/selected-bar.component';
 | 
			
		||||
import { ContactsMainSidenavComponent } from 'app/main/apps/contacts/sidenavs/main/main.component';
 | 
			
		||||
import { ContactsMainSidebarComponent } from 'app/main/apps/contacts/sidebars/main/main.component';
 | 
			
		||||
import { ContactsContactFormDialogComponent } from 'app/main/apps/contacts/contact-form/contact-form.component';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
@ -29,7 +29,7 @@ const routes: Routes = [
 | 
			
		||||
        ContactsComponent,
 | 
			
		||||
        ContactsContactListComponent,
 | 
			
		||||
        ContactsSelectedBarComponent,
 | 
			
		||||
        ContactsMainSidenavComponent,
 | 
			
		||||
        ContactsMainSidebarComponent,
 | 
			
		||||
        ContactsContactFormDialogComponent
 | 
			
		||||
    ],
 | 
			
		||||
    imports        : [
 | 
			
		||||
@ -44,12 +44,12 @@ const routes: Routes = [
 | 
			
		||||
        MatInputModule,
 | 
			
		||||
        MatMenuModule,
 | 
			
		||||
        MatRippleModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
        MatTableModule,
 | 
			
		||||
        MatToolbarModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseConfirmDialogModule
 | 
			
		||||
        FuseConfirmDialogModule,
 | 
			
		||||
        FuseSidebarModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers      : [
 | 
			
		||||
        ContactsService
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
<div class="sidenav-content">
 | 
			
		||||
<div class="sidebar-content">
 | 
			
		||||
 | 
			
		||||
    <div class="card mat-white-bg">
 | 
			
		||||
        <!-- SIDENAV HEADER -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDEBAR HEADER -->
 | 
			
		||||
        <div class="header p-24" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <!-- USER -->
 | 
			
		||||
@ -10,9 +11,9 @@
 | 
			
		||||
            <!-- / USER -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / SIDENAV HEADER -->
 | 
			
		||||
        <!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV CONTENT -->
 | 
			
		||||
        <!-- SIDEBAR CONTENT -->
 | 
			
		||||
        <div class="content py-16" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
            <div class="nav">
 | 
			
		||||
@ -38,6 +39,8 @@
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -6,7 +6,7 @@
 | 
			
		||||
    flex: 1 0 auto;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
 | 
			
		||||
    .sidenav-content {
 | 
			
		||||
    .sidebar-content {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        flex-direction: column;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
@ -5,11 +5,11 @@ import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
import { ContactsService } from 'app/main/apps/contacts/contacts.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'contacts-main-sidenav',
 | 
			
		||||
    selector   : 'contacts-main-sidebar',
 | 
			
		||||
    templateUrl: './main.component.html',
 | 
			
		||||
    styleUrls  : ['./main.component.scss']
 | 
			
		||||
})
 | 
			
		||||
export class ContactsMainSidenavComponent implements OnInit, OnDestroy
 | 
			
		||||
export class ContactsMainSidebarComponent implements OnInit, OnDestroy
 | 
			
		||||
{
 | 
			
		||||
    user: any;
 | 
			
		||||
    filterBy: string;
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,70 +1,62 @@
 | 
			
		||||
#dashboard-project {
 | 
			
		||||
 | 
			
		||||
    mat-sidenav-container {
 | 
			
		||||
    > .sidebar {
 | 
			
		||||
        width: 280px;
 | 
			
		||||
        min-width: 280px;
 | 
			
		||||
        max-width: 280px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        .mat-drawer-content,
 | 
			
		||||
        .mat-sidenav-content {
 | 
			
		||||
            flex: 1 1 100%;
 | 
			
		||||
        }
 | 
			
		||||
    > .center {
 | 
			
		||||
 | 
			
		||||
        .center {
 | 
			
		||||
        > .header {
 | 
			
		||||
            height: 160px;
 | 
			
		||||
            min-height: 160px;
 | 
			
		||||
            max-height: 160px;
 | 
			
		||||
 | 
			
		||||
            > .header {
 | 
			
		||||
                height: 160px;
 | 
			
		||||
                min-height: 160px;
 | 
			
		||||
                max-height: 160px;
 | 
			
		||||
            .selected-project {
 | 
			
		||||
                background: rgba(0, 0, 0, 0.12);
 | 
			
		||||
                color: #FFFFFF;
 | 
			
		||||
                padding: 8px 16px;
 | 
			
		||||
                height: 40px;
 | 
			
		||||
                line-height: 24px;
 | 
			
		||||
                font-size: 16px;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
                .selected-project {
 | 
			
		||||
                    background: rgba(0, 0, 0, 0.12);
 | 
			
		||||
            .project-selector {
 | 
			
		||||
                margin-left: 1px;
 | 
			
		||||
                border-radius: 0;
 | 
			
		||||
                background: rgba(0, 0, 0, 0.12);
 | 
			
		||||
 | 
			
		||||
                mat-icon {
 | 
			
		||||
                    color: #FFFFFF;
 | 
			
		||||
                    padding: 8px 16px;
 | 
			
		||||
                    height: 40px;
 | 
			
		||||
                    line-height: 24px;
 | 
			
		||||
                    font-size: 16px;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                .project-selector {
 | 
			
		||||
                    margin-left: 1px;
 | 
			
		||||
                    border-radius: 0;
 | 
			
		||||
                    background: rgba(0, 0, 0, 0.12);
 | 
			
		||||
 | 
			
		||||
                    mat-icon {
 | 
			
		||||
                        color: #FFFFFF;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            > .content {
 | 
			
		||||
                flex: 1;
 | 
			
		||||
 | 
			
		||||
                mat-tab-group {
 | 
			
		||||
                    height: 100%;
 | 
			
		||||
 | 
			
		||||
                    .mat-tab-body-wrapper {
 | 
			
		||||
                        flex-grow: 1;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                .mat-tab-label-container {
 | 
			
		||||
                    padding: 0 24px;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .sidenav {
 | 
			
		||||
            width: 250px !important;
 | 
			
		||||
            min-width: 250px !important;
 | 
			
		||||
            max-width: 250px !important;
 | 
			
		||||
        }
 | 
			
		||||
        > .content {
 | 
			
		||||
            flex: 1;
 | 
			
		||||
 | 
			
		||||
        .widget {
 | 
			
		||||
            mat-tab-group {
 | 
			
		||||
                height: 100%;
 | 
			
		||||
 | 
			
		||||
            &.widget5 {
 | 
			
		||||
 | 
			
		||||
                .gridline-path.gridline-path-horizontal {
 | 
			
		||||
                    display: none;
 | 
			
		||||
                .mat-tab-body-wrapper {
 | 
			
		||||
                    flex-grow: 1;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            .mat-tab-label-container {
 | 
			
		||||
                padding: 0 24px;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    .widget {
 | 
			
		||||
 | 
			
		||||
        &.widget5 {
 | 
			
		||||
 | 
			
		||||
            .gridline-path.gridline-path-horizontal {
 | 
			
		||||
                display: none;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -6,6 +6,7 @@ import * as shape from 'd3-shape';
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
 | 
			
		||||
import { ProjectDashboardService } from 'app/main/apps/dashboards/project/project.service';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector     : 'project-dashboard',
 | 
			
		||||
@ -32,9 +33,11 @@ export class ProjectDashboardComponent implements OnInit
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     * @param {ProjectDashboardService} _projectDashboardService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService,
 | 
			
		||||
        private _projectDashboardService: ProjectDashboardService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
@ -161,6 +164,20 @@ export class ProjectDashboardComponent implements OnInit
 | 
			
		||||
        this.widget11.onContactsChanged.next(this.widgets.widget11.table.rows);
 | 
			
		||||
        this.widget11.dataSource = new FilesDataSource(this.widget11);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // -----------------------------------------------------------------------------------------------------
 | 
			
		||||
    // @ Public methods
 | 
			
		||||
    // -----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class FilesDataSource extends DataSource<any>
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,11 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { CdkTableModule } from '@angular/cdk/table';
 | 
			
		||||
import { MatButtonModule, MatDividerModule, MatFormFieldModule, MatIconModule, MatMenuModule, MatSelectModule, MatSidenavModule, MatTableModule, MatTabsModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatDividerModule, MatFormFieldModule, MatIconModule, MatMenuModule, MatSelectModule, MatTableModule, MatTabsModule } from '@angular/material';
 | 
			
		||||
import { NgxChartsModule } from '@swimlane/ngx-charts';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
import { FuseWidgetModule } from '@fuse/components/widget/widget.module';
 | 
			
		||||
 | 
			
		||||
import { ProjectDashboardComponent } from 'app/main/apps/dashboards/project/project.component';
 | 
			
		||||
@ -34,13 +35,13 @@ const routes: Routes = [
 | 
			
		||||
        MatIconModule,
 | 
			
		||||
        MatMenuModule,
 | 
			
		||||
        MatSelectModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
        MatTableModule,
 | 
			
		||||
        MatTabsModule,
 | 
			
		||||
 | 
			
		||||
        NgxChartsModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule,
 | 
			
		||||
        FuseWidgetModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers   : [
 | 
			
		||||
 | 
			
		||||
@ -4,10 +4,12 @@
 | 
			
		||||
    <div class="content p-24 w-100-p">
 | 
			
		||||
 | 
			
		||||
        <!-- WIDGET GROUP -->
 | 
			
		||||
        <div class="widget-group" fxLayout="row wrap" fxFlex="100" fxLayoutAlign="start start" *fuseIfOnDom [@animateStagger]="{value:'50'}">
 | 
			
		||||
        <div class="widget-group" fxLayout="row wrap" fxFlex="100" fxLayoutAlign="start start"
 | 
			
		||||
             [@animateStagger]="{value:'50'}">
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 1 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
@ -57,7 +59,8 @@
 | 
			
		||||
            <!-- / WIDGET 1 -->
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 2 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
@ -100,7 +103,8 @@
 | 
			
		||||
            <!-- / WIDGET 2 -->
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 3 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
@ -143,7 +147,8 @@
 | 
			
		||||
            <!-- / WIDGET 3 -->
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 4 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-xs="50" fxFlex.gt-md="25">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
@ -228,7 +233,8 @@
 | 
			
		||||
            <!-- / WIDGET 5 -->
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 6 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-sm="50">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
@ -260,13 +266,19 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div class="py-8 mh-16 border-top" fxLayout="row wrap" fxLayoutAlign="start center">
 | 
			
		||||
                        <div class="py-8 border-right" fxLayout="column" fxLayoutAlign="center center" fxFlex="100" fxFlex.gt-sm="50">
 | 
			
		||||
                            <span class="mat-display-1 mb-0">{{widgets.widget6.footerLeft.count[widget6.currentRange]}}</span>
 | 
			
		||||
                        <div class="py-8 border-right" fxLayout="column" fxLayoutAlign="center center" fxFlex="100"
 | 
			
		||||
                             fxFlex.gt-sm="50">
 | 
			
		||||
                            <span class="mat-display-1 mb-0">
 | 
			
		||||
                                {{widgets.widget6.footerLeft.count[widget6.currentRange]}}
 | 
			
		||||
                            </span>
 | 
			
		||||
                            <span class="h4">{{widgets.widget6.footerLeft.title}}</span>
 | 
			
		||||
                        </div>
 | 
			
		||||
 | 
			
		||||
                        <div class="py-8" fxLayout="column" fxLayoutAlign="center center" fxFlex="100" fxFlex.gt-sm="50">
 | 
			
		||||
                            <span class="mat-display-1 mb-0">{{widgets.widget6.footerRight.count[widget6.currentRange]}}</span>
 | 
			
		||||
                        <div class="py-8" fxLayout="column" fxLayoutAlign="center center" fxFlex="100"
 | 
			
		||||
                             fxFlex.gt-sm="50">
 | 
			
		||||
                            <span class="mat-display-1 mb-0">
 | 
			
		||||
                                {{widgets.widget6.footerRight.count[widget6.currentRange]}}
 | 
			
		||||
                            </span>
 | 
			
		||||
                            <span class="h4">{{widgets.widget6.footerRight.title}}</span>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
@ -278,7 +290,8 @@
 | 
			
		||||
            <!-- / WIDGET 6 -->
 | 
			
		||||
 | 
			
		||||
            <!-- WIDGET 7 -->
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100" fxFlex.gt-sm="50">
 | 
			
		||||
            <fuse-widget [@animate]="{value:'*',params:{y:'100%'}}" class="widget" fxLayout="column" fxFlex="100"
 | 
			
		||||
                         fxFlex.gt-sm="50">
 | 
			
		||||
 | 
			
		||||
                <!-- Front -->
 | 
			
		||||
                <div class="fuse-widget-front mat-white-bg mat-elevation-z2">
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="order" class="page-layout carded fullwidth" fusePerfectScrollbar>
 | 
			
		||||
<div id="order" class="page-layout carded fullwidth inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
@ -19,7 +19,7 @@
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <div fxLayout="column" fxLayoutAlign="start start"
 | 
			
		||||
                     *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                     [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                    <div class="h2">
 | 
			
		||||
                        Order {{order.reference}}
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="orders" class="page-layout carded fullwidth" fusePerfectScrollbar>
 | 
			
		||||
<div id="orders" class="page-layout carded fullwidth inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
@ -15,8 +15,10 @@
 | 
			
		||||
            <!-- APP TITLE -->
 | 
			
		||||
            <div class="logo"
 | 
			
		||||
                 fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <mat-icon class="logo-icon mr-16" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">shopping_basket</mat-icon>
 | 
			
		||||
                <span class="logo-text h1" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Orders</span>
 | 
			
		||||
                <mat-icon class="logo-icon mr-16" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                    shopping_basket
 | 
			
		||||
                </mat-icon>
 | 
			
		||||
                <span class="logo-text h1" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Orders</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / APP TITLE -->
 | 
			
		||||
 | 
			
		||||
@ -92,7 +94,7 @@
 | 
			
		||||
 | 
			
		||||
                <!-- Status Column -->
 | 
			
		||||
                <ng-container cdkColumnDef="status">
 | 
			
		||||
                    <mat-header-cell *cdkHeaderCellDef mat-sort-header >Status</mat-header-cell>
 | 
			
		||||
                    <mat-header-cell *cdkHeaderCellDef mat-sort-header>Status</mat-header-cell>
 | 
			
		||||
                    <mat-cell *cdkCellDef="let order">
 | 
			
		||||
                        <p class="status text-truncate h6 p-4" [ngClass]="order.status[0].color">
 | 
			
		||||
                            {{order.status[0].name}}
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="product" class="page-layout carded fullwidth" fusePerfectScrollbar>
 | 
			
		||||
<div id="product" class="page-layout carded fullwidth inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
@ -17,14 +17,13 @@
 | 
			
		||||
                    <mat-icon>arrow_back</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                <div class="product-image mr-8 mr-sm-16" *fuseIfOnDom
 | 
			
		||||
                     [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                <div class="product-image mr-8 mr-sm-16" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                    <img *ngIf="product.images[0]" [src]="product.images[0].url">
 | 
			
		||||
                    <img *ngIf="!product.images[0]" [src]="'assets/images/ecommerce/product-image-placeholder.png'">
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div fxLayout="column" fxLayoutAlign="start start"
 | 
			
		||||
                     *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                     [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                    <div class="h2" *ngIf="pageType ==='edit'">
 | 
			
		||||
                        {{product.name}}
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<div id="products" class="page-layout carded fullwidth" fusePerfectScrollbar>
 | 
			
		||||
<div id="products" class="page-layout carded fullwidth inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
@ -15,11 +15,10 @@
 | 
			
		||||
            <!-- APP TITLE -->
 | 
			
		||||
            <div class="logo my-12 m-sm-0"
 | 
			
		||||
                 fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <mat-icon class="logo-icon mr-16" *fuseIfOnDom
 | 
			
		||||
                          [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                <mat-icon class="logo-icon mr-16" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
                    shopping_basket
 | 
			
		||||
                </mat-icon>
 | 
			
		||||
                <span class="logo-text h1" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                <span class="logo-text h1" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">
 | 
			
		||||
                    Products
 | 
			
		||||
                </span>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<mat-table #table [dataSource]="dataSource" *fuseIfOnDom [@animateStagger]="{value:'50'}">
 | 
			
		||||
<mat-table #table [dataSource]="dataSource" [@animateStagger]="{value:'50'}">
 | 
			
		||||
 | 
			
		||||
    <!-- Type Column -->
 | 
			
		||||
    <ng-container cdkColumnDef="icon">
 | 
			
		||||
@ -42,8 +42,8 @@
 | 
			
		||||
    <ng-container cdkColumnDef="detail-button">
 | 
			
		||||
        <mat-header-cell *cdkHeaderCellDef fxFlex="48px" fxHide.gt-md></mat-header-cell>
 | 
			
		||||
        <mat-cell *cdkCellDef="let row" fxFlex="48px" fxHide.gt-md>
 | 
			
		||||
            <button mat-icon-button class="sidenav-toggle"
 | 
			
		||||
                    fuseMatSidenavToggler="file-manager-right-sidenav">
 | 
			
		||||
            <button mat-icon-button class="sidebar-toggle" fxHide.gt-md
 | 
			
		||||
                    (click)="toggleSidebar('file-manager-details-sidebar')">
 | 
			
		||||
                <mat-icon class="secondary-text">info</mat-icon>
 | 
			
		||||
            </button>
 | 
			
		||||
        </mat-cell>
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import { Observable, Subject } from 'rxjs';
 | 
			
		||||
import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
import { FileManagerService } from 'app/main/apps/file-manager/file-manager.service';
 | 
			
		||||
 | 
			
		||||
@ -27,9 +28,11 @@ export class FileManagerFileListComponent implements OnInit, OnDestroy
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {FileManagerService} _fileManagerService
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _fileManagerService: FileManagerService
 | 
			
		||||
        private _fileManagerService: FileManagerService,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        // Set the private defaults
 | 
			
		||||
@ -83,6 +86,16 @@ export class FileManagerFileListComponent implements OnInit, OnDestroy
 | 
			
		||||
    {
 | 
			
		||||
        this._fileManagerService.onFileSelected.next(selected);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class FilesDataSource extends DataSource<any>
 | 
			
		||||
 | 
			
		||||
@ -1,79 +1,75 @@
 | 
			
		||||
<div id="file-manager" class="page-layout simple right-sidenav" fusePerfectScrollbar>
 | 
			
		||||
<div id="file-manager" class="page-layout simple right-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar main-sidebar" name="file-manager-main-sidebar" position="left">
 | 
			
		||||
        <file-manager-main-sidebar></file-manager-main-sidebar>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav left-sidenav" position="start" opened="false" mode="over"
 | 
			
		||||
                     fuseMatSidenavHelper="file-manager-left-sidenav">
 | 
			
		||||
            <file-manager-main-sidenav></file-manager-main-sidenav>
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
    <!-- CENTER -->
 | 
			
		||||
    <div class="center" fxFlex>
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center" fxFlex>
 | 
			
		||||
        <!-- HEADER -->
 | 
			
		||||
        <div class="header mat-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between start">
 | 
			
		||||
 | 
			
		||||
            <!-- HEADER -->
 | 
			
		||||
            <div class="header mat-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between start">
 | 
			
		||||
            <!-- TOOLBAR -->
 | 
			
		||||
            <div class="toolbar w-100-p" fxFlex fxLayout="row" fxLayoutAlign="space-between start">
 | 
			
		||||
 | 
			
		||||
                <!-- TOOLBAR -->
 | 
			
		||||
                <div class="toolbar w-100-p" fxFlex fxLayout="row" fxLayoutAlign="space-between start">
 | 
			
		||||
 | 
			
		||||
                    <div class="left-side" fxLayout="row">
 | 
			
		||||
                        <button mat-icon-button class="sidenav-toggle"
 | 
			
		||||
                                fuseMatSidenavToggler="file-manager-left-sidenav">
 | 
			
		||||
                            <mat-icon>menu</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div class="right-side" fxLayout="row">
 | 
			
		||||
                        <button mat-icon-button aria-label="Search" matTooltip="Search">
 | 
			
		||||
                            <mat-icon>search</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
                <!-- BREADCRUMB -->
 | 
			
		||||
                <div class="breadcrumb text-truncate h1 pl-72" fxLayout="row" fxLayoutAlign="start center"
 | 
			
		||||
                     *fuseIfOnDom [@animate]="{value:'*',params:{x:'50px'}}">
 | 
			
		||||
                    <div *ngFor="let path of pathArr; last  as isLast" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <span>{{path}}</span>
 | 
			
		||||
                        <mat-icon *ngIf="!isLast" class="separator">chevron_right</mat-icon>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / BREADCRUMB -->
 | 
			
		||||
 | 
			
		||||
                <!-- ADD FILE BUTTON -->
 | 
			
		||||
                <div class="file-uploader">
 | 
			
		||||
                    <input hidden type="file" #fileInput/>
 | 
			
		||||
                    <button mat-fab
 | 
			
		||||
                            class="add-file-button mat-warn"
 | 
			
		||||
                            (click)="fileInput.click()"
 | 
			
		||||
                            aria-label="Add file"
 | 
			
		||||
                            *fuseIfOnDom [@animate]="{value:'*', params:{delay:'300ms',scale:'0.2'}}">
 | 
			
		||||
                        <mat-icon>add</mat-icon>
 | 
			
		||||
                <div class="left-side" fxLayout="row">
 | 
			
		||||
                    <button mat-icon-button class="sidebar-toggle"
 | 
			
		||||
                            (click)="toggleSidebar('file-manager-main-sidebar')">
 | 
			
		||||
                        <mat-icon>menu</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / ADD FILE BUTTON -->
 | 
			
		||||
 | 
			
		||||
                <div class="right-side" fxLayout="row">
 | 
			
		||||
                    <button mat-icon-button aria-label="Search" matTooltip="Search">
 | 
			
		||||
                        <mat-icon>search</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / HEADER -->
 | 
			
		||||
            <!-- / TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div class="content mat-white-bg" fusePerfectScrollbar>
 | 
			
		||||
                <file-list></file-list>
 | 
			
		||||
            <!-- BREADCRUMB -->
 | 
			
		||||
            <div class="breadcrumb text-truncate h1 pl-72" fxLayout="row" fxLayoutAlign="start center"
 | 
			
		||||
                 [@animate]="{value:'*',params:{x:'50px'}}">
 | 
			
		||||
                <div *ngFor="let path of pathArr; last  as isLast" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <span>{{path}}</span>
 | 
			
		||||
                    <mat-icon *ngIf="!isLast" class="separator">chevron_right</mat-icon>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
            <!-- / BREADCRUMB -->
 | 
			
		||||
 | 
			
		||||
            <!-- ADD FILE BUTTON -->
 | 
			
		||||
            <div class="file-uploader">
 | 
			
		||||
                <input hidden type="file" #fileInput/>
 | 
			
		||||
                <button mat-fab
 | 
			
		||||
                        class="add-file-button mat-warn"
 | 
			
		||||
                        (click)="fileInput.click()"
 | 
			
		||||
                        aria-label="Add file"
 | 
			
		||||
                        [@animate]="{value:'*', params:{delay:'300ms',scale:'0.2'}}">
 | 
			
		||||
                    <mat-icon>add</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / ADD FILE BUTTON -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
        <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav right-sidenav " position="end" opened="true" mode="side"
 | 
			
		||||
                     fuseMatSidenavHelper="file-manager-right-sidenav" mat-is-locked-open="gt-md">
 | 
			
		||||
            <file-manager-details-sidenav></file-manager-details-sidenav>
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
        <!-- CONTENT -->
 | 
			
		||||
        <div class="content mat-white-bg" fusePerfectScrollbar>
 | 
			
		||||
            <file-list></file-list>
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar details-sidebar" name="file-manager-details-sidebar" position="right"
 | 
			
		||||
                  lockedOpen="gt-md">
 | 
			
		||||
        <file-manager-details-sidebar></file-manager-details-sidebar>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -2,52 +2,46 @@
 | 
			
		||||
 | 
			
		||||
#file-manager {
 | 
			
		||||
 | 
			
		||||
    mat-sidenav-container {
 | 
			
		||||
    .sidebar {
 | 
			
		||||
        width: 320px !important;
 | 
			
		||||
        min-width: 320px !important;
 | 
			
		||||
        max-width: 320px !important;
 | 
			
		||||
 | 
			
		||||
        .sidenav {
 | 
			
		||||
            width: 320px !important;
 | 
			
		||||
            min-width: 320px !important;
 | 
			
		||||
            max-width: 320px !important;
 | 
			
		||||
        &.main-sidebar {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
            &.left-sidenav {
 | 
			
		||||
        &.details-sidebar {
 | 
			
		||||
            @include media-breakpoint('gt-md') {
 | 
			
		||||
                z-index: 0;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .center {
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
 | 
			
		||||
        .header {
 | 
			
		||||
            position: relative;
 | 
			
		||||
            height: 160px;
 | 
			
		||||
            min-height: 160px;
 | 
			
		||||
            max-height: 160px;
 | 
			
		||||
 | 
			
		||||
            @include media-breakpoint-down('sm') {
 | 
			
		||||
                height: 120px;
 | 
			
		||||
                min-height: 120px;
 | 
			
		||||
                max-height: 120px;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            &.right-sidenav {
 | 
			
		||||
                @include media-breakpoint('gt-md') {
 | 
			
		||||
                    z-index: 0;
 | 
			
		||||
                }
 | 
			
		||||
            .add-file-button {
 | 
			
		||||
                position: absolute;
 | 
			
		||||
                bottom: -28px;
 | 
			
		||||
                left: 16px;
 | 
			
		||||
                z-index: 999;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        > .mat-sidenav-content,
 | 
			
		||||
        > .mat-drawer-content {
 | 
			
		||||
            z-index: 1;
 | 
			
		||||
 | 
			
		||||
            .center {
 | 
			
		||||
 | 
			
		||||
                .header {
 | 
			
		||||
                    position: relative;
 | 
			
		||||
                    height: 160px;
 | 
			
		||||
                    min-height: 160px;
 | 
			
		||||
                    max-height: 160px;
 | 
			
		||||
 | 
			
		||||
                    @include media-breakpoint-down('sm') {
 | 
			
		||||
                        height: 120px;
 | 
			
		||||
                        min-height: 120px;
 | 
			
		||||
                        max-height: 120px;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    .add-file-button {
 | 
			
		||||
                        position: absolute;
 | 
			
		||||
                        bottom: -28px;
 | 
			
		||||
                        left: 16px;
 | 
			
		||||
                        z-index: 999;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                .content {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        .content {
 | 
			
		||||
            flex: 1 1 auto;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@ import { Subject } from 'rxjs';
 | 
			
		||||
import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
import { FileManagerService } from 'app/main/apps/file-manager/file-manager.service';
 | 
			
		||||
 | 
			
		||||
@ -25,9 +26,11 @@ export class FileManagerComponent implements OnInit, OnDestroy
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {FileManagerService} _fileManagerService
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _fileManagerService: FileManagerService
 | 
			
		||||
        private _fileManagerService: FileManagerService,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        // Set the private defaults
 | 
			
		||||
@ -60,4 +63,18 @@ export class FileManagerComponent implements OnInit, OnDestroy
 | 
			
		||||
        this._unsubscribeAll.next();
 | 
			
		||||
        this._unsubscribeAll.complete();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // -----------------------------------------------------------------------------------------------------
 | 
			
		||||
    // @ Public methods
 | 
			
		||||
    // -----------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,16 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { CdkTableModule } from '@angular/cdk/table';
 | 
			
		||||
import { MatButtonModule, MatIconModule, MatRippleModule, MatSidenavModule, MatSlideToggleModule, MatTableModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatIconModule, MatRippleModule, MatSlideToggleModule, MatTableModule } from '@angular/material';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
import { FileManagerService } from 'app/main/apps/file-manager/file-manager.service';
 | 
			
		||||
import { FileManagerComponent } from 'app/main/apps/file-manager/file-manager.component';
 | 
			
		||||
import { FileManagerDetailsSidenavComponent } from 'app/main/apps/file-manager/sidenavs/details/details.component';
 | 
			
		||||
import { FileManagerDetailsSidebarComponent } from 'app/main/apps/file-manager/sidebars/details/details.component';
 | 
			
		||||
import { FileManagerFileListComponent } from 'app/main/apps/file-manager/file-list/file-list.component';
 | 
			
		||||
import { FileManagerMainSidenavComponent } from 'app/main/apps/file-manager/sidenavs/main/main.component';
 | 
			
		||||
import { FileManagerMainSidebarComponent } from 'app/main/apps/file-manager/sidebars/main/main.component';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
    {
 | 
			
		||||
@ -26,8 +27,8 @@ const routes: Routes = [
 | 
			
		||||
    declarations: [
 | 
			
		||||
        FileManagerComponent,
 | 
			
		||||
        FileManagerFileListComponent,
 | 
			
		||||
        FileManagerMainSidenavComponent,
 | 
			
		||||
        FileManagerDetailsSidenavComponent
 | 
			
		||||
        FileManagerMainSidebarComponent,
 | 
			
		||||
        FileManagerDetailsSidebarComponent
 | 
			
		||||
    ],
 | 
			
		||||
    imports     : [
 | 
			
		||||
        RouterModule.forChild(routes),
 | 
			
		||||
@ -37,10 +38,10 @@ const routes: Routes = [
 | 
			
		||||
        MatIconModule,
 | 
			
		||||
        MatRippleModule,
 | 
			
		||||
        MatSlideToggleModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
        MatTableModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers   : [
 | 
			
		||||
        FileManagerService
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<!-- SIDENAV HEADER -->
 | 
			
		||||
<!-- SIDEBAR HEADER -->
 | 
			
		||||
<div class="header mat-accent-bg p-24" fxLayout="column" fxLayoutAlign="space-between">
 | 
			
		||||
 | 
			
		||||
    <div class="toolbar" fxLayout="row" fxLayoutAlign="end center">
 | 
			
		||||
@ -24,13 +24,12 @@
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV HEADER -->
 | 
			
		||||
<!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
<!-- SIDENAV CONTENT -->
 | 
			
		||||
<!-- SIDEBAR CONTENT -->
 | 
			
		||||
<div class="content p-24 mat-white-bg" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
    <div class="file-details"
 | 
			
		||||
         *fuseIfOnDom [@animate]="{value:'*',params:{delay:'200ms'}}">
 | 
			
		||||
    <div class="file-details" [@animate]="{value:'*',params:{delay:'200ms'}}">
 | 
			
		||||
 | 
			
		||||
        <div class="preview file-icon" fxLayout="row" fxLayoutAlign="center center">
 | 
			
		||||
            <mat-icon class="type-icon s-48" [ngClass]="selected.type"></mat-icon>
 | 
			
		||||
@ -81,4 +80,4 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
:host {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    flex-direction: column;
 | 
			
		||||
    flex: 1 0 auto;
 | 
			
		||||
    flex: 1 1 auto;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
 | 
			
		||||
    > .header {
 | 
			
		||||
@ -7,12 +7,12 @@ import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { FileManagerService } from 'app/main/apps/file-manager/file-manager.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'file-manager-details-sidenav',
 | 
			
		||||
    selector   : 'file-manager-details-sidebar',
 | 
			
		||||
    templateUrl: './details.component.html',
 | 
			
		||||
    styleUrls  : ['./details.component.scss'],
 | 
			
		||||
    animations : fuseAnimations
 | 
			
		||||
})
 | 
			
		||||
export class FileManagerDetailsSidenavComponent implements OnInit, OnDestroy
 | 
			
		||||
export class FileManagerDetailsSidebarComponent implements OnInit, OnDestroy
 | 
			
		||||
{
 | 
			
		||||
    selected: any;
 | 
			
		||||
 | 
			
		||||
@ -1,54 +1,54 @@
 | 
			
		||||
<!-- SIDENAV HEADER -->
 | 
			
		||||
<!-- SIDEBAR HEADER -->
 | 
			
		||||
<div class="header p-24" fxLayout="column" fxLayoutAlign="space-between">
 | 
			
		||||
 | 
			
		||||
    <div class="logo" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
        <mat-icon class="logo-icon mr-16">folder</mat-icon>
 | 
			
		||||
        <mat-icon class="logo-icon secondary-text mr-16">folder</mat-icon>
 | 
			
		||||
        <span class="logo-text h1">File Manager</span>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV HEADER -->
 | 
			
		||||
<!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
<!-- SIDENAV CONTENT -->
 | 
			
		||||
<!-- SIDEBAR CONTENT -->
 | 
			
		||||
<div class="content py-16" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
    <div class="nav">
 | 
			
		||||
 | 
			
		||||
        <div class="nav-item" aria-label="inbox">
 | 
			
		||||
            <a class="nav-link" matRipple>
 | 
			
		||||
                <mat-icon class="nav-link-icon">folder</mat-icon>
 | 
			
		||||
                <mat-icon class="nav-link-icon secondary-text">folder</mat-icon>
 | 
			
		||||
                <span class="title">My Files</span>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="nav-item" aria-label="starred">
 | 
			
		||||
            <a class="nav-link" matRipple>
 | 
			
		||||
                <mat-icon class="nav-link-icon">star</mat-icon>
 | 
			
		||||
                <mat-icon class="nav-link-icon secondary-text">star</mat-icon>
 | 
			
		||||
                <div class="title">Starred</div>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="nav-item" aria-label="starred">
 | 
			
		||||
            <a class="nav-link" matRipple>
 | 
			
		||||
                <mat-icon class="nav-link-icon">folder_shared</mat-icon>
 | 
			
		||||
                <mat-icon class="nav-link-icon secondary-text">folder_shared</mat-icon>
 | 
			
		||||
                <div class="title">Sharred with me</div>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="nav-item" aria-label="starred">
 | 
			
		||||
            <a class="nav-link" matRipple>
 | 
			
		||||
                <mat-icon class="nav-link-icon">access_time</mat-icon>
 | 
			
		||||
                <mat-icon class="nav-link-icon secondary-text">access_time</mat-icon>
 | 
			
		||||
                <div class="title">Recent</div>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="nav-item" aria-label="starred">
 | 
			
		||||
            <a class="nav-link" matRipple>
 | 
			
		||||
                <mat-icon class="nav-link-icon">not_interested</mat-icon>
 | 
			
		||||
                <mat-icon class="nav-link-icon secondary-text">not_interested</mat-icon>
 | 
			
		||||
                <div class="title">Offline</div>
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
import { Component } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'file-manager-main-sidenav',
 | 
			
		||||
    selector   : 'file-manager-main-sidebar',
 | 
			
		||||
    templateUrl: './main.component.html',
 | 
			
		||||
    styleUrls  : ['./main.component.scss']
 | 
			
		||||
})
 | 
			
		||||
export class FileManagerMainSidenavComponent
 | 
			
		||||
export class FileManagerMainSidebarComponent
 | 
			
		||||
{
 | 
			
		||||
    selected: any;
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
.mail-compose-dialog {
 | 
			
		||||
.mail-ngrx-compose-dialog {
 | 
			
		||||
 | 
			
		||||
    .mat-dialog-container {
 | 
			
		||||
        padding: 0;
 | 
			
		||||
        width: 720px;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
 | 
			
		||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector     : 'mail-compose',
 | 
			
		||||
    selector     : 'mail-ngrx-compose',
 | 
			
		||||
    templateUrl  : './compose.component.html',
 | 
			
		||||
    styleUrls    : ['./compose.component.scss'],
 | 
			
		||||
    encapsulation: ViewEncapsulation.None
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ import * as fromStore from 'app/main/apps/mail-ngrx/store';
 | 
			
		||||
import { MailNgrxService } from 'app/main/apps/mail-ngrx/mail.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector       : 'mail-details',
 | 
			
		||||
    selector       : 'mail-ngrx-details',
 | 
			
		||||
    templateUrl    : './mail-details.component.html',
 | 
			
		||||
    styleUrls      : ['./mail-details.component.scss'],
 | 
			
		||||
    changeDetection: ChangeDetectionStrategy.OnPush
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ import { Mail } from '../../mail.model';
 | 
			
		||||
import * as fromStore from '../../store';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector       : 'mail-list-item',
 | 
			
		||||
    selector       : 'mail-ngrx-list-item',
 | 
			
		||||
    templateUrl    : './mail-list-item.component.html',
 | 
			
		||||
    styleUrls      : ['./mail-list-item.component.scss'],
 | 
			
		||||
    changeDetection: ChangeDetectionStrategy.OnPush
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="mail-list">
 | 
			
		||||
    <mail-list-item matRipple *ngFor="let mail of mails" [mail]="mail" (click)="readMail(mail.id)"
 | 
			
		||||
    <mail-ngrx-list-item matRipple *ngFor="let mail of mails" [mail]="mail" (click)="readMail(mail.id)"
 | 
			
		||||
                    [ngClass]="{'current-mail mat-accent-50-bg':mail?.id == currentMail?.id}">
 | 
			
		||||
    </mail-list-item>
 | 
			
		||||
    </mail-ngrx-list-item>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ import { Mail } from 'app/main/apps/mail-ngrx/mail.model';
 | 
			
		||||
import { MailNgrxService } from 'app/main/apps/mail-ngrx/mail.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector       : 'mail-list',
 | 
			
		||||
    selector       : 'mail-ngrx-list',
 | 
			
		||||
    templateUrl    : './mail-list.component.html',
 | 
			
		||||
    styleUrls      : ['./mail-list.component.scss'],
 | 
			
		||||
    changeDetection: ChangeDetectionStrategy.OnPush
 | 
			
		||||
 | 
			
		||||
@ -1,115 +1,109 @@
 | 
			
		||||
<div id="mail" class="page-layout carded left-sidenav" fusePerfectScrollbar>
 | 
			
		||||
<div id="mail" class="page-layout carded left-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
    <!-- / TOP BACKGROUND -->
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar" name="mail-ngrx-main-sidebar" position="left" lockedOpen="gt-md">
 | 
			
		||||
        <mail-ngrx-main-sidebar></mail-ngrx-main-sidebar>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav mat-sidenav-opened" position="start" mode="side" opened="true"
 | 
			
		||||
                     fuseMatSidenavHelper="carded-left-sidenav" mat-is-locked-open="gt-md">
 | 
			
		||||
            <mail-main-sidenav></mail-main-sidenav>
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
    <!-- CENTER -->
 | 
			
		||||
    <div class="center">
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center">
 | 
			
		||||
        <!-- CONTENT HEADER -->
 | 
			
		||||
        <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT HEADER -->
 | 
			
		||||
            <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
            <div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                <div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <button mat-icon-button class="sidebar-toggle" fxHide.gt-md
 | 
			
		||||
                        (click)="toggleSidebar('mail-ngrx-main-sidebar')">
 | 
			
		||||
                    <mat-icon>menu</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button class="sidenav-toggle"
 | 
			
		||||
                            fuseMatSidenavToggler="carded-left-sidenav"
 | 
			
		||||
                            fxHide.gt-md aria-label="Toggle Sidenav">
 | 
			
		||||
                        <mat-icon>menu</mat-icon>
 | 
			
		||||
                <div class="search mat-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-icon>search</mat-icon>
 | 
			
		||||
                    <input [formControl]="searchInput" [placeholder]="'MAIL.SEARCH_PLACEHOLDER' | translate" fxFlex>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CONTENT HEADER -->
 | 
			
		||||
 | 
			
		||||
        <!-- CONTENT CARD -->
 | 
			
		||||
        <div class="content-card mat-white-bg" [ngClass]="{'current-mail-selected':currentMail$ | async}">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT TOOLBAR -->
 | 
			
		||||
            <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                <div class="mail-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                    <mat-checkbox (click)="toggleSelectAll($event)"
 | 
			
		||||
                                  [checked]="hasSelectedMails"
 | 
			
		||||
                                  [indeterminate]="isIndeterminate">
 | 
			
		||||
                    </mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                        <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item (click)="selectAllMails()">All</button>
 | 
			
		||||
                        <button mat-menu-item (click)="deselectAllMails()">None</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('read', true)">Read</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('read', false)">Unread</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('starred', true)">Starred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('starred', false)">Unstarred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('important', true)">Important</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMailsByParameter('important', false)">Unimportant</button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
 | 
			
		||||
                    <div class="toolbar-separator" *ngIf="hasSelectedMails"></div>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">delete</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
                    <div class="search mat-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <mat-icon>search</mat-icon>
 | 
			
		||||
                        <input [formControl]="searchInput" [placeholder]="'MAIL.SEARCH_PLACEHOLDER' | translate" fxFlex>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">folder</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #folderMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item *ngFor="let folder of folders$ | async"
 | 
			
		||||
                                (click)="setFolderOnSelectedMails(folder.id)">{{folder.title}}
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item *ngFor="let label of labels$ | async"
 | 
			
		||||
                                (click)="toggleLabelOnSelectedMails(label.id)">{{label.title}}
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div *ngIf="currentMail$ | async" fxHide.gt-xs>
 | 
			
		||||
                    <button mat-icon-button (click)="deselectCurrentMail()">
 | 
			
		||||
                        <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT HEADER -->
 | 
			
		||||
            <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT CARD -->
 | 
			
		||||
            <div class="content-card mat-white-bg" [ngClass]="{'current-mail-selected':currentMail$ | async}">
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div class="content" fxLayout="row">
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT TOOLBAR -->
 | 
			
		||||
                <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                    <div class="mail-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                        <mat-checkbox (click)="toggleSelectAll($event)"
 | 
			
		||||
                                      [checked]="hasSelectedMails"
 | 
			
		||||
                                      [indeterminate]="isIndeterminate">
 | 
			
		||||
                        </mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                            <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item (click)="selectAllMails()">All</button>
 | 
			
		||||
                            <button mat-menu-item (click)="deselectAllMails()">None</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('read', true)">Read</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('read', false)">Unread</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('starred', true)">Starred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('starred', false)">Unstarred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('important', true)">Important</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMailsByParameter('important', false)">Unimportant</button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
 | 
			
		||||
                        <div class="toolbar-separator" *ngIf="hasSelectedMails"></div>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">delete</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">folder</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #folderMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item *ngFor="let folder of folders$ | async"
 | 
			
		||||
                                    (click)="setFolderOnSelectedMails(folder.id)">{{folder.title}}
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item *ngFor="let label of labels$ | async"
 | 
			
		||||
                                    (click)="toggleLabelOnSelectedMails(label.id)">{{label.title}}
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div *ngIf="currentMail$ | async" fxHide.gt-xs>
 | 
			
		||||
                        <button mat-icon-button (click)="deselectCurrentMail()">
 | 
			
		||||
                            <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT -->
 | 
			
		||||
                <div class="content" fxLayout="row">
 | 
			
		||||
 | 
			
		||||
                    <mail-list fusePerfectScrollbar fxFlex [mails]="mails$ | async" [currentMail]="currentMail$ | async"></mail-list>
 | 
			
		||||
                    <mail-details [mail]="currentMail$ | async" fusePerfectScrollbar fxFlex></mail-details>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT -->
 | 
			
		||||
                <mail-ngrx-list fusePerfectScrollbar fxFlex [mails]="mails$ | async" [currentMail]="currentMail$ | async"></mail-ngrx-list>
 | 
			
		||||
                <mail-ngrx-details [mail]="currentMail$ | async" fusePerfectScrollbar fxFlex></mail-ngrx-details>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT CARD -->
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
        <!-- / CONTENT CARD -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            .search-wrapper {
 | 
			
		||||
                @include mat-elevation(7);
 | 
			
		||||
 | 
			
		||||
                .sidenav-toggle {
 | 
			
		||||
                .sidebar-toggle {
 | 
			
		||||
                    margin: 0;
 | 
			
		||||
                    width: 56px;
 | 
			
		||||
                    height: 56px;
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ import * as fromStore from 'app/main/apps/mail-ngrx/store';
 | 
			
		||||
 | 
			
		||||
import { locale as english } from 'app/main/apps/mail-ngrx/i18n/en';
 | 
			
		||||
import { locale as turkish } from 'app/main/apps/mail-ngrx/i18n/tr';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector       : 'mail-ngrx',
 | 
			
		||||
@ -37,18 +38,20 @@ export class MailNgrxComponent implements OnInit, OnDestroy
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {FuseConfigService} _fuseConfigService
 | 
			
		||||
     * @param {MailNgrxService} _mailNgrxService
 | 
			
		||||
     * @param {FuseTranslationLoaderService} _fuseTranslationLoaderService
 | 
			
		||||
     * @param {Store<MailAppState>} _store
 | 
			
		||||
     * @param {ChangeDetectorRef} _changeDetectorRef
 | 
			
		||||
     * @param {FuseConfigService} _fuseConfigService
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     * @param {FuseTranslationLoaderService} _fuseTranslationLoaderService
 | 
			
		||||
     * @param {MailNgrxService} _mailNgrxService
 | 
			
		||||
     * @param {Store<MailAppState>} _store
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _changeDetectorRef: ChangeDetectorRef,
 | 
			
		||||
        private _fuseConfigService: FuseConfigService,
 | 
			
		||||
        private _mailNgrxService: MailNgrxService,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService,
 | 
			
		||||
        private _fuseTranslationLoaderService: FuseTranslationLoaderService,
 | 
			
		||||
        private _store: Store<fromStore.MailAppState>,
 | 
			
		||||
        private _changeDetectorRef: ChangeDetectorRef
 | 
			
		||||
        private _mailNgrxService: MailNgrxService,
 | 
			
		||||
        private _store: Store<fromStore.MailAppState>
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        // Configure the layout
 | 
			
		||||
@ -198,4 +201,14 @@ export class MailNgrxComponent implements OnInit, OnDestroy
 | 
			
		||||
    {
 | 
			
		||||
        this._changeDetectorRef.markForCheck();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDialogModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule, MatSidenavModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDialogModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
import { TranslateModule } from '@ngx-translate/core';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
import * as fromGuards from 'app/main/apps/mail-ngrx/store/guards/index';
 | 
			
		||||
import { MailNgrxStoreModule } from 'app/main/apps/mail-ngrx/store/store.module';
 | 
			
		||||
@ -11,7 +12,7 @@ import { MailNgrxComponent } from 'app/main/apps/mail-ngrx/mail.component';
 | 
			
		||||
import { MailNgrxListComponent } from 'app/main/apps/mail-ngrx/mail-list/mail-list.component';
 | 
			
		||||
import { MailNgrxListItemComponent } from 'app/main/apps/mail-ngrx/mail-list/mail-list-item/mail-list-item.component';
 | 
			
		||||
import { MailNgrxDetailsComponent } from 'app/main/apps/mail-ngrx/mail-details/mail-details.component';
 | 
			
		||||
import { MailNgrxMainSidenavComponent } from 'app/main/apps/mail-ngrx/sidenavs/main/main-sidenav.component';
 | 
			
		||||
import { MailNgrxMainSidebarComponent } from 'app/main/apps/mail-ngrx/sidebars/main/main-sidebar.component';
 | 
			
		||||
import { MailNgrxComposeDialogComponent } from 'app/main/apps/mail-ngrx/dialogs/compose/compose.component';
 | 
			
		||||
import { MailNgrxService } from 'app/main/apps/mail-ngrx/mail.service';
 | 
			
		||||
 | 
			
		||||
@ -58,7 +59,7 @@ const routes: Routes = [
 | 
			
		||||
        MailNgrxListComponent,
 | 
			
		||||
        MailNgrxListItemComponent,
 | 
			
		||||
        MailNgrxDetailsComponent,
 | 
			
		||||
        MailNgrxMainSidenavComponent,
 | 
			
		||||
        MailNgrxMainSidebarComponent,
 | 
			
		||||
        MailNgrxComposeDialogComponent
 | 
			
		||||
    ],
 | 
			
		||||
    imports        : [
 | 
			
		||||
@ -73,12 +74,12 @@ const routes: Routes = [
 | 
			
		||||
        MatMenuModule,
 | 
			
		||||
        MatRippleModule,
 | 
			
		||||
        MatSelectModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
        MatToolbarModule,
 | 
			
		||||
 | 
			
		||||
        TranslateModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule,
 | 
			
		||||
 | 
			
		||||
        MailNgrxStoreModule
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
<!-- SIDENAV HEADER -->
 | 
			
		||||
<!-- SIDEBAR HEADER -->
 | 
			
		||||
<div fxLayout="column" fxLayoutAlign="space-between start"
 | 
			
		||||
     class="header mat-accent-bg p-24 pb-4">
 | 
			
		||||
 | 
			
		||||
@ -20,9 +20,9 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV HEADER -->
 | 
			
		||||
<!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
<!-- SIDENAV CONTENT -->
 | 
			
		||||
<!-- SIDEBAR CONTENT -->
 | 
			
		||||
<div class="content" fusePerfectScrollbar>
 | 
			
		||||
 | 
			
		||||
    <div class="p-24">
 | 
			
		||||
@ -69,4 +69,4 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';
 | 
			
		||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
 | 
			
		||||
import { MatDialog } from '@angular/material';
 | 
			
		||||
import { FormGroup } from '@angular/forms';
 | 
			
		||||
import { Store } from '@ngrx/store';
 | 
			
		||||
@ -9,12 +9,12 @@ import * as fromStore from 'app/main/apps/mail-ngrx/store';
 | 
			
		||||
import { MailNgrxComposeDialogComponent } from 'app/main/apps/mail-ngrx/dialogs/compose/compose.component';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector       : 'mail-main-sidenav',
 | 
			
		||||
    templateUrl    : './main-sidenav.component.html',
 | 
			
		||||
    styleUrls      : ['./main-sidenav.component.scss'],
 | 
			
		||||
    selector       : 'mail-ngrx-main-sidebar',
 | 
			
		||||
    templateUrl    : './main-sidebar.component.html',
 | 
			
		||||
    styleUrls      : ['./main-sidebar.component.scss'],
 | 
			
		||||
    changeDetection: ChangeDetectionStrategy.OnPush
 | 
			
		||||
})
 | 
			
		||||
export class MailNgrxMainSidenavComponent
 | 
			
		||||
export class MailNgrxMainSidebarComponent
 | 
			
		||||
{
 | 
			
		||||
    labels: any[];
 | 
			
		||||
    accounts: object;
 | 
			
		||||
@ -59,7 +59,7 @@ export class MailNgrxMainSidenavComponent
 | 
			
		||||
    composeDialog(): void
 | 
			
		||||
    {
 | 
			
		||||
        this.dialogRef = this._matDialog.open(MailNgrxComposeDialogComponent, {
 | 
			
		||||
            panelClass: 'mail-compose-dialog'
 | 
			
		||||
            panelClass: 'mail-ngrx-compose-dialog'
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        this.dialogRef.afterClosed()
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
<div *ngIf="!mail" fxLayout="column" fxLayoutAlign="center center" fxFlex>
 | 
			
		||||
    <mat-icon class="s-128 mb-16 select-message-icon hint-text" *fuseIfOnDom
 | 
			
		||||
    <mat-icon class="s-128 mb-16 select-message-icon hint-text"
 | 
			
		||||
              [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">
 | 
			
		||||
        email
 | 
			
		||||
    </mat-icon>
 | 
			
		||||
    <span class="select-message-text hint-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'400ms'}}">
 | 
			
		||||
    <span class="select-message-text hint-text" [@animate]="{value:'*',params:{delay:'400ms'}}">
 | 
			
		||||
        <span>{{ 'MAIL.SELECT_A_MESSAGE_TO_READ' | translate }}</span>
 | 
			
		||||
    </span>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <span class="no-messages-text hint-text">{{ 'MAIL.NO_MESSAGES' | translate }}</span>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="mail-list" *fuseIfOnDom [@animateStagger]="{value:'50'}">
 | 
			
		||||
<div class="mail-list" [@animateStagger]="{value:'50'}">
 | 
			
		||||
    <mail-list-item matRipple *ngFor="let mail of mails" [mail]="mail" (click)="readMail(mail.id)"
 | 
			
		||||
                    [ngClass]="{'current-mail mat-accent-50-bg':mail?.id == currentMail?.id}"
 | 
			
		||||
                    [@animate]="{value:'*',params:{y:'100%'}}">
 | 
			
		||||
 | 
			
		||||
@ -1,113 +1,107 @@
 | 
			
		||||
<div id="mail" class="page-layout carded left-sidenav" fusePerfectScrollbar>
 | 
			
		||||
<div id="mail" class="page-layout carded left-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
    <!-- / TOP BACKGROUND -->
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar" name="mail-main-sidebar" position="left" lockedOpen="gt-md">
 | 
			
		||||
        <mail-main-sidebar></mail-main-sidebar>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav" position="start" mode="side" opened="true"
 | 
			
		||||
                     fuseMatSidenavHelper="carded-left-sidenav" mat-is-locked-open="gt-md">
 | 
			
		||||
            <mail-main-sidenav></mail-main-sidenav>
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
    <!-- CENTER -->
 | 
			
		||||
    <div class="center">
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center">
 | 
			
		||||
        <!-- CONTENT HEADER -->
 | 
			
		||||
        <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT HEADER -->
 | 
			
		||||
            <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
            <div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                <div class="search-wrapper" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <button mat-icon-button class="sidebar-toggle" fxHide.gt-md
 | 
			
		||||
                        (click)="toggleSidebar('mail-main-sidebar')">
 | 
			
		||||
                    <mat-icon>menu</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button class="sidenav-toggle"
 | 
			
		||||
                            fuseMatSidenavToggler="carded-left-sidenav"
 | 
			
		||||
                            fxHide.gt-md aria-label="Toggle Sidenav">
 | 
			
		||||
                        <mat-icon>menu</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
                    <div class="search mat-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <mat-icon>search</mat-icon>
 | 
			
		||||
                        <input [formControl]="searchInput" [placeholder]="'MAIL.SEARCH_PLACEHOLDER' | translate" fxFlex>
 | 
			
		||||
                    </div>
 | 
			
		||||
                <div class="search mat-white-bg" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-icon>search</mat-icon>
 | 
			
		||||
                    <input [formControl]="searchInput" [placeholder]="'MAIL.SEARCH_PLACEHOLDER' | translate" fxFlex>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT HEADER -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT CARD -->
 | 
			
		||||
            <div class="content-card mat-white-bg" [ngClass]="{'current-mail-selected':currentMail}">
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT TOOLBAR -->
 | 
			
		||||
                <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                    <div class="mail-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <mat-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedMails"
 | 
			
		||||
                                      [indeterminate]="isIndeterminate"></mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                            <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails()">All</button>
 | 
			
		||||
                            <button mat-menu-item (click)="deselectMails()">None</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('read', true)">Read</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('read', false)">Unread</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('starred', true)">Starred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('starred', false)">Unstarred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('important', true)">Important</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectMails('important', false)">Unimportant</button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
 | 
			
		||||
                        <div class="toolbar-separator" *ngIf="hasSelectedMails"></div>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">delete</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">folder</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #folderMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item *ngFor="let folder of folders"
 | 
			
		||||
                                    (click)="setFolderOnSelectedMails(folder.id)">{{folder.title}}
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                            <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item *ngFor="let label of labels"
 | 
			
		||||
                                    (click)="toggleLabelOnSelectedMails(label.id)">{{label.title}}
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div *ngIf="currentMail" fxHide.gt-xs>
 | 
			
		||||
                        <button mat-icon-button (click)="deselectCurrentMail()">
 | 
			
		||||
                            <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT -->
 | 
			
		||||
                <div class="content" fxLayout="row">
 | 
			
		||||
 | 
			
		||||
                    <mail-list fusePerfectScrollbar fxFlex></mail-list>
 | 
			
		||||
                    <mail-details fusePerfectScrollbar fxFlex></mail-details>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT CARD -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
        <!-- / CONTENT HEADER -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
        <!-- CONTENT CARD -->
 | 
			
		||||
        <div class="content-card mat-white-bg" [ngClass]="{'current-mail-selected':currentMail}">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT TOOLBAR -->
 | 
			
		||||
            <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                <div class="mail-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedMails"
 | 
			
		||||
                                  [indeterminate]="isIndeterminate"></mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                        <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails()">All</button>
 | 
			
		||||
                        <button mat-menu-item (click)="deselectMails()">None</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('read', true)">Read</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('read', false)">Unread</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('starred', true)">Starred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('starred', false)">Unstarred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('important', true)">Important</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectMails('important', false)">Unimportant</button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
 | 
			
		||||
                    <div class="toolbar-separator" *ngIf="hasSelectedMails"></div>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button (click)="setFolderOnSelectedMails(4)" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">delete</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="folderMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">folder</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #folderMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item *ngFor="let folder of folders"
 | 
			
		||||
                                (click)="setFolderOnSelectedMails(folder.id)">{{folder.title}}
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedMails">
 | 
			
		||||
                        <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item *ngFor="let label of labels"
 | 
			
		||||
                                (click)="toggleLabelOnSelectedMails(label.id)">{{label.title}}
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div *ngIf="currentMail" fxHide.gt-xs>
 | 
			
		||||
                    <button mat-icon-button (click)="deselectCurrentMail()">
 | 
			
		||||
                        <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div class="content" fxLayout="row">
 | 
			
		||||
 | 
			
		||||
                <mail-list fusePerfectScrollbar fxFlex></mail-list>
 | 
			
		||||
                <mail-details fusePerfectScrollbar fxFlex></mail-details>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CONTENT CARD -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            .search-wrapper {
 | 
			
		||||
                @include mat-elevation(7);
 | 
			
		||||
 | 
			
		||||
                .sidenav-toggle {
 | 
			
		||||
                .sidebar-toggle {
 | 
			
		||||
                    margin: 0;
 | 
			
		||||
                    width: 56px;
 | 
			
		||||
                    height: 56px;
 | 
			
		||||
 | 
			
		||||
@ -4,13 +4,14 @@ import { Subject } from 'rxjs';
 | 
			
		||||
import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { FuseTranslationLoaderService } from '@fuse/services/translation-loader.service';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
import { FuseConfigService } from '@fuse/services/config.service';
 | 
			
		||||
 | 
			
		||||
import { Mail } from 'app/main/apps/mail/mail.model';
 | 
			
		||||
import { MailService } from 'app/main/apps/mail/mail.service';
 | 
			
		||||
 | 
			
		||||
import { locale as english } from 'app/main/apps/mail//i18n/en';
 | 
			
		||||
import { locale as turkish } from 'app/main/apps/mail//i18n/tr';
 | 
			
		||||
import { FuseConfigService } from '@fuse/services/config.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'mail',
 | 
			
		||||
@ -35,11 +36,13 @@ export class MailComponent implements OnInit, OnDestroy
 | 
			
		||||
     *
 | 
			
		||||
     * @param {MailService} _mailService
 | 
			
		||||
     * @param {FuseConfigService} _fuseConfigService
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     * @param {FuseTranslationLoaderService} _fuseTranslationLoaderService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _mailService: MailService,
 | 
			
		||||
        private _fuseConfigService: FuseConfigService,
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService,
 | 
			
		||||
        private _fuseTranslationLoaderService: FuseTranslationLoaderService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
@ -185,4 +188,14 @@ export class MailComponent implements OnInit, OnDestroy
 | 
			
		||||
    {
 | 
			
		||||
        this._mailService.setFolderOnSelectedMails(folderId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,16 +1,17 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDialogModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule, MatSidenavModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDialogModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule, MatToolbarModule } from '@angular/material';
 | 
			
		||||
import { TranslateModule } from '@ngx-translate/core';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
import { MailService } from 'app/main/apps/mail/mail.service';
 | 
			
		||||
import { MailComponent } from 'app/main/apps/mail/mail.component';
 | 
			
		||||
import { MailListComponent } from 'app/main/apps/mail/mail-list/mail-list.component';
 | 
			
		||||
import { MailListItemComponent } from 'app/main/apps/mail/mail-list/mail-list-item/mail-list-item.component';
 | 
			
		||||
import { MailDetailsComponent } from 'app/main/apps/mail/mail-details/mail-details.component';
 | 
			
		||||
import { MailMainSidenavComponent } from 'app/main/apps/mail/sidenavs/main/main-sidenav.component';
 | 
			
		||||
import { MailMainSidebarComponent } from 'app/main/apps/mail/sidebars/main/main-sidebar.component';
 | 
			
		||||
import { MailComposeDialogComponent } from 'app/main/apps/mail/dialogs/compose/compose.component';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
@ -68,7 +69,7 @@ const routes: Routes = [
 | 
			
		||||
        MailListComponent,
 | 
			
		||||
        MailListItemComponent,
 | 
			
		||||
        MailDetailsComponent,
 | 
			
		||||
        MailMainSidenavComponent,
 | 
			
		||||
        MailMainSidebarComponent,
 | 
			
		||||
        MailComposeDialogComponent
 | 
			
		||||
    ],
 | 
			
		||||
    imports        : [
 | 
			
		||||
@ -83,12 +84,12 @@ const routes: Routes = [
 | 
			
		||||
        MatMenuModule,
 | 
			
		||||
        MatRippleModule,
 | 
			
		||||
        MatSelectModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
        MatToolbarModule,
 | 
			
		||||
 | 
			
		||||
        TranslateModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers      : [
 | 
			
		||||
        MailService
 | 
			
		||||
 | 
			
		||||
@ -1,14 +1,14 @@
 | 
			
		||||
<!-- SIDENAV HEADER -->
 | 
			
		||||
<!-- SIDEBAR HEADER -->
 | 
			
		||||
<div fxLayout="column" fxLayoutAlign="space-between start"
 | 
			
		||||
     class="header mat-accent-bg p-24 pb-4">
 | 
			
		||||
 | 
			
		||||
    <div class="logo" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
        <mat-icon class="logo-icon s-32" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">mail
 | 
			
		||||
        <mat-icon class="logo-icon s-32" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">mail
 | 
			
		||||
        </mat-icon>
 | 
			
		||||
        <span class="logo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Mailbox</span>
 | 
			
		||||
        <span class="logo-text" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">Mailbox</span>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="account" fxLayout="column" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms'}}">
 | 
			
		||||
    <div class="account" fxLayout="column" [@animate]="{value:'*',params:{delay:'300ms'}}">
 | 
			
		||||
        <div class="title">John Doe</div>
 | 
			
		||||
        <mat-form-field floatLabel="never">
 | 
			
		||||
            <mat-select class="account-selection" placeholder="Mail Selection"
 | 
			
		||||
@ -21,10 +21,10 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV HEADER -->
 | 
			
		||||
<!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
<!-- SIDENAV CONTENT -->
 | 
			
		||||
<div class="content" fusePerfectScrollbar *fuseIfOnDom [@animate]="{value:'*',params:{y:'50px'}}">
 | 
			
		||||
<!-- SIDEBAR CONTENT -->
 | 
			
		||||
<div class="content" fusePerfectScrollbar [@animate]="{value:'*',params:{y:'50px'}}">
 | 
			
		||||
 | 
			
		||||
    <div class="p-24">
 | 
			
		||||
        <button mat-raised-button
 | 
			
		||||
@ -70,4 +70,4 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -1,21 +1,21 @@
 | 
			
		||||
import { Component, OnDestroy, OnInit } from '@angular/core';
 | 
			
		||||
import { FormGroup } from '@angular/forms';
 | 
			
		||||
import { MatDialog } from '@angular/material';
 | 
			
		||||
import { Subject } from 'rxjs';
 | 
			
		||||
import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
 | 
			
		||||
import { MailService } from 'app/main/apps/mail/mail.service';
 | 
			
		||||
import { MailComposeDialogComponent } from 'app/main/apps/mail/dialogs/compose/compose.component';
 | 
			
		||||
import { Subject } from 'rxjs';
 | 
			
		||||
import { takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'mail-main-sidenav',
 | 
			
		||||
    templateUrl: './main-sidenav.component.html',
 | 
			
		||||
    styleUrls  : ['./main-sidenav.component.scss'],
 | 
			
		||||
    selector   : 'mail-main-sidebar',
 | 
			
		||||
    templateUrl: './main-sidebar.component.html',
 | 
			
		||||
    styleUrls  : ['./main-sidebar.component.scss'],
 | 
			
		||||
    animations : fuseAnimations
 | 
			
		||||
})
 | 
			
		||||
export class MailMainSidenavComponent implements OnInit, OnDestroy
 | 
			
		||||
export class MailMainSidebarComponent implements OnInit, OnDestroy
 | 
			
		||||
{
 | 
			
		||||
    folders: any[];
 | 
			
		||||
    filters: any[];
 | 
			
		||||
@ -1,14 +1,14 @@
 | 
			
		||||
<!-- SIDENAV HEADER -->
 | 
			
		||||
<!-- SIDEBAR HEADER -->
 | 
			
		||||
<div fxLayout="column" fxLayoutAlign="space-between start"
 | 
			
		||||
     class="header mat-accent-bg p-24 pb-4">
 | 
			
		||||
    <div class="logo" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
        <mat-icon class="logo-icon s-32" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
        <mat-icon class="logo-icon s-32" [@animate]="{value:'*',params:{delay:'50ms',scale:'0.2'}}">
 | 
			
		||||
            check_box
 | 
			
		||||
        </mat-icon>
 | 
			
		||||
        <span class="logo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">To-Do</span>
 | 
			
		||||
        <span class="logo-text" [@animate]="{value:'*',params:{delay:'100ms',x:'-25px'}}">To-Do</span>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="account" fxLayout="column" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'300ms'}}">
 | 
			
		||||
    <div class="account" fxLayout="column" [@animate]="{value:'*',params:{delay:'300ms'}}">
 | 
			
		||||
        <div class="title">John Doe</div>
 | 
			
		||||
        <mat-form-field floatLabel="never">
 | 
			
		||||
            <mat-select class="account-selection" placeholder="Todo Selection"
 | 
			
		||||
@ -21,10 +21,10 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV HEADER -->
 | 
			
		||||
<!-- / SIDEBAR HEADER -->
 | 
			
		||||
 | 
			
		||||
<!-- SIDENAV CONTENT -->
 | 
			
		||||
<div class="content" fusePerfectScrollbar *fuseIfOnDom [@animate]="{value:'*',params:{y:'50px'}}">
 | 
			
		||||
<!-- SIDEBAR CONTENT -->
 | 
			
		||||
<div class="content" fusePerfectScrollbar [@animate]="{value:'*',params:{y:'50px'}}">
 | 
			
		||||
 | 
			
		||||
    <div class="p-24">
 | 
			
		||||
        <button mat-raised-button
 | 
			
		||||
@ -68,4 +68,4 @@
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<!-- / SIDENAV CONTENT -->
 | 
			
		||||
<!-- / SIDEBAR CONTENT -->
 | 
			
		||||
@ -20,6 +20,7 @@
 | 
			
		||||
 | 
			
		||||
        .account {
 | 
			
		||||
            width: 100%;
 | 
			
		||||
 | 
			
		||||
            .account-selection {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@ -8,12 +8,12 @@ import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { TodoService } from 'app/main/apps/todo/todo.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
    selector   : 'todo-main-sidenav',
 | 
			
		||||
    templateUrl: './main-sidenav.component.html',
 | 
			
		||||
    styleUrls  : ['./main-sidenav.component.scss'],
 | 
			
		||||
    selector   : 'todo-main-sidebar',
 | 
			
		||||
    templateUrl: './main-sidebar.component.html',
 | 
			
		||||
    styleUrls  : ['./main-sidebar.component.scss'],
 | 
			
		||||
    animations : fuseAnimations
 | 
			
		||||
})
 | 
			
		||||
export class TodoMainSidenavComponent implements OnInit, OnDestroy
 | 
			
		||||
export class TodoMainSidebarComponent implements OnInit, OnDestroy
 | 
			
		||||
{
 | 
			
		||||
    folders: any[];
 | 
			
		||||
    filters: any[];
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
<div *ngIf="!todo" fxLayout="column" fxLayoutAlign="center center" fxFlex>
 | 
			
		||||
    <mat-icon class="s-120 mb-12 select-todo-icon hint-text" *fuseIfOnDom
 | 
			
		||||
    <mat-icon class="s-120 mb-12 select-todo-icon hint-text"
 | 
			
		||||
              [@animate]="{value:'*',params:{delay:'300ms',scale:'0.2'}}">check_box
 | 
			
		||||
    </mat-icon>
 | 
			
		||||
    <span class="hint-text mat-h1 select-todo-text" *fuseIfOnDom [@animate]="{value:'*',params:{delay:'400ms'}}">
 | 
			
		||||
    <span class="hint-text mat-h1 select-todo-text" [@animate]="{value:'*',params:{delay:'400ms'}}">
 | 
			
		||||
        Select a todo
 | 
			
		||||
    </span>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<div *ngIf="todos.length === 0" fxLayout="column" fxLayoutAlign="center center" fxFlexFill>
 | 
			
		||||
    <span class="no-todos-text hint-text">There are no todos!</span>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="todo-list" ngxDroppable [model]="todos" (out)="onDrop($event)" *fuseIfOnDom [@animateStagger]="{value:'50'}">
 | 
			
		||||
<div class="todo-list" ngxDroppable [model]="todos" (out)="onDrop($event)" [@animateStagger]="{value:'50'}">
 | 
			
		||||
    <todo-list-item class="todo-list-item has-handle"
 | 
			
		||||
                    *ngFor="let todo of todos" [todo]="todo"
 | 
			
		||||
                    ngxDraggable
 | 
			
		||||
 | 
			
		||||
@ -1,102 +1,93 @@
 | 
			
		||||
<div id="todo" class="page-layout carded left-sidenav" fusePerfectScrollbar>
 | 
			
		||||
<div id="todo" class="page-layout carded left-sidebar inner-scroll">
 | 
			
		||||
 | 
			
		||||
    <!-- TOP BACKGROUND -->
 | 
			
		||||
    <div class="top-bg mat-accent-bg"></div>
 | 
			
		||||
    <!-- / TOP BACKGROUND -->
 | 
			
		||||
 | 
			
		||||
    <mat-sidenav-container>
 | 
			
		||||
    <!-- SIDEBAR -->
 | 
			
		||||
    <fuse-sidebar class="sidebar" name="todo-main-sidebar" position="left" lockedOpen="gt-md">
 | 
			
		||||
        <todo-main-sidebar></todo-main-sidebar>
 | 
			
		||||
    </fuse-sidebar>
 | 
			
		||||
    <!-- / SIDEBAR -->
 | 
			
		||||
 | 
			
		||||
        <!-- SIDENAV -->
 | 
			
		||||
        <mat-sidenav class="sidenav" position="start" opened="true" mode="side"
 | 
			
		||||
                     fuseMatSidenavHelper="carded-left-sidenav" mat-is-locked-open="gt-md">
 | 
			
		||||
            <todo-main-sidenav></todo-main-sidenav>
 | 
			
		||||
        </mat-sidenav>
 | 
			
		||||
        <!-- / SIDENAV -->
 | 
			
		||||
    <!-- CENTER -->
 | 
			
		||||
    <div class="center">
 | 
			
		||||
 | 
			
		||||
        <!-- CENTER -->
 | 
			
		||||
        <div class="center">
 | 
			
		||||
        <!-- CONTENT HEADER -->
 | 
			
		||||
        <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT HEADER -->
 | 
			
		||||
            <div class="header" fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
            <div class="search-wrapper mat-white-bg" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
 | 
			
		||||
                <div class="search-wrapper mat-white-bg" fxFlex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                <button mat-icon-button class="sidebar-toggle" fxHide.gt-md
 | 
			
		||||
                        (click)="toggleSidebar('todo-main-sidebar')">
 | 
			
		||||
                    <mat-icon>menu</mat-icon>
 | 
			
		||||
                </button>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button class="sidenav-toggle"
 | 
			
		||||
                            fuseMatSidenavToggler="carded-left-sidenav"
 | 
			
		||||
                            fxHide.gt-md aria-label="Toggle Sidenav">
 | 
			
		||||
                        <mat-icon>menu</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
 | 
			
		||||
                    <div class="search" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <mat-icon>search</mat-icon>
 | 
			
		||||
                        <input [formControl]="searchInput" placeholder="Search for a task" fxFlex>
 | 
			
		||||
                    </div>
 | 
			
		||||
                <div class="search" flex fxLayout="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-icon>search</mat-icon>
 | 
			
		||||
                    <input [formControl]="searchInput" placeholder="Search for a task" fxFlex>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT HEADER -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT CARD -->
 | 
			
		||||
            <div class="content-card mat-white-bg" [ngClass]="{'current-todo-selected':currentTodo}">
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT TOOLBAR -->
 | 
			
		||||
                <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                    <div class="todo-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
                        <mat-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedTodos"
 | 
			
		||||
                                      [indeterminate]="isIndeterminate"></mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                            <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos()">All</button>
 | 
			
		||||
                            <button mat-menu-item (click)="deselectTodos()">None</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('read', true)">Read</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('read', false)">Unread</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('starred', true)">Starred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('starred', false)">Unstarred</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('important', true)">Important</button>
 | 
			
		||||
                            <button mat-menu-item (click)="selectTodos('important', false)">Unimportant</button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
 | 
			
		||||
                        <div class="toolbar-separator" *ngIf="hasSelectedTodos"></div>
 | 
			
		||||
 | 
			
		||||
                        <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedTodos">
 | 
			
		||||
                            <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                        <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                            <button mat-menu-item *ngFor="let tag of tags" (click)="toggleTagOnSelectedTodos(tag.id)">
 | 
			
		||||
                                {{tag.title}}
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </mat-menu>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                    <div *ngIf="currentTodo" fxHide.gt-lg>
 | 
			
		||||
                        <button mat-icon-button (click)="deselectCurrentTodo()">
 | 
			
		||||
                            <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </div>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
                <!-- CONTENT -->
 | 
			
		||||
                <div class="content" fxFlexAlign="row">
 | 
			
		||||
 | 
			
		||||
                    <todo-list fusePerfectScrollbar fxFlex></todo-list>
 | 
			
		||||
 | 
			
		||||
                    <todo-details fusePerfectScrollbar fxFlex></todo-details>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
                <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT CARD -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
        <!-- / CONTENT HEADER -->
 | 
			
		||||
 | 
			
		||||
    </mat-sidenav-container>
 | 
			
		||||
        <!-- CONTENT CARD -->
 | 
			
		||||
        <div class="content-card mat-white-bg" [ngClass]="{'current-todo-selected':currentTodo}">
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT TOOLBAR -->
 | 
			
		||||
            <div class="toolbar px-24 py-8">
 | 
			
		||||
 | 
			
		||||
                <div class="todo-selection" fxFlex="row" fxLayoutAlign="start center">
 | 
			
		||||
                    <mat-checkbox (click)="toggleSelectAll()" [checked]="hasSelectedTodos"
 | 
			
		||||
                                  [indeterminate]="isIndeterminate"></mat-checkbox>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="selectMenu">
 | 
			
		||||
                        <mat-icon>arrow_drop_down</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #selectMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos()">All</button>
 | 
			
		||||
                        <button mat-menu-item (click)="deselectTodos()">None</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('read', true)">Read</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('read', false)">Unread</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('starred', true)">Starred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('starred', false)">Unstarred</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('important', true)">Important</button>
 | 
			
		||||
                        <button mat-menu-item (click)="selectTodos('important', false)">Unimportant</button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
 | 
			
		||||
                    <div class="toolbar-separator" *ngIf="hasSelectedTodos"></div>
 | 
			
		||||
 | 
			
		||||
                    <button mat-icon-button [matMenuTriggerFor]="labelMenu" *ngIf="hasSelectedTodos">
 | 
			
		||||
                        <mat-icon class="secondary-text">label</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <mat-menu #labelMenu="matMenu">
 | 
			
		||||
                        <button mat-menu-item *ngFor="let tag of tags" (click)="toggleTagOnSelectedTodos(tag.id)">
 | 
			
		||||
                            {{tag.title}}
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </mat-menu>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <div *ngIf="currentTodo" fxHide.gt-lg>
 | 
			
		||||
                    <button mat-icon-button (click)="deselectCurrentTodo()">
 | 
			
		||||
                        <mat-icon class="secondary-text">arrow_back</mat-icon>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT TOOLBAR -->
 | 
			
		||||
 | 
			
		||||
            <!-- CONTENT -->
 | 
			
		||||
            <div class="content" fxFlexAlign="row">
 | 
			
		||||
                <todo-list fusePerfectScrollbar fxFlex></todo-list>
 | 
			
		||||
                <todo-details fusePerfectScrollbar fxFlex></todo-details>
 | 
			
		||||
            </div>
 | 
			
		||||
            <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- / CONTENT CARD -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
            .search-wrapper {
 | 
			
		||||
                @include mat-elevation(7);
 | 
			
		||||
 | 
			
		||||
                .sidenav-toggle {
 | 
			
		||||
                .sidebar-toggle {
 | 
			
		||||
                    margin: 0;
 | 
			
		||||
                    width: 56px;
 | 
			
		||||
                    height: 56px;
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import { Subject } from 'rxjs';
 | 
			
		||||
import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
 | 
			
		||||
 | 
			
		||||
import { fuseAnimations } from '@fuse/animations';
 | 
			
		||||
import { FuseSidebarService } from '@fuse/components/sidebar/sidebar.service';
 | 
			
		||||
 | 
			
		||||
import { Todo } from 'app/main/apps/todo/todo.model';
 | 
			
		||||
import { TodoService } from 'app/main/apps/todo/todo.service';
 | 
			
		||||
@ -29,9 +30,11 @@ export class TodoComponent implements OnInit, OnDestroy
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor
 | 
			
		||||
     *
 | 
			
		||||
     * @param {FuseSidebarService} _fuseSidebarService
 | 
			
		||||
     * @param {TodoService} _todoService
 | 
			
		||||
     */
 | 
			
		||||
    constructor(
 | 
			
		||||
        private _fuseSidebarService: FuseSidebarService,
 | 
			
		||||
        private _todoService: TodoService
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
@ -155,4 +158,14 @@ export class TodoComponent implements OnInit, OnDestroy
 | 
			
		||||
    {
 | 
			
		||||
        this._todoService.toggleTagOnSelectedTodos(tagId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Toggle the sidebar
 | 
			
		||||
     *
 | 
			
		||||
     * @param name
 | 
			
		||||
     */
 | 
			
		||||
    toggleSidebar(name): void
 | 
			
		||||
    {
 | 
			
		||||
        this._fuseSidebarService.getSidebar(name).toggleOpen();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,14 @@
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDatepickerModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule, MatSidenavModule } from '@angular/material';
 | 
			
		||||
import { MatButtonModule, MatCheckboxModule, MatDatepickerModule, MatFormFieldModule, MatIconModule, MatInputModule, MatMenuModule, MatRippleModule, MatSelectModule } from '@angular/material';
 | 
			
		||||
import { NgxDnDModule } from '@swimlane/ngx-dnd';
 | 
			
		||||
 | 
			
		||||
import { FuseSharedModule } from '@fuse/shared.module';
 | 
			
		||||
import { FuseSidebarModule } from '@fuse/components';
 | 
			
		||||
 | 
			
		||||
import { TodoService } from 'app/main/apps/todo/todo.service';
 | 
			
		||||
import { TodoComponent } from 'app/main/apps/todo/todo.component';
 | 
			
		||||
import { TodoMainSidenavComponent } from 'app/main/apps/todo/sidenavs/main/main-sidenav.component';
 | 
			
		||||
import { TodoMainSidebarComponent } from 'app/main/apps/todo/sidebars/main/main-sidebar.component';
 | 
			
		||||
import { TodoListItemComponent } from 'app/main/apps/todo/todo-list/todo-list-item/todo-list-item.component';
 | 
			
		||||
import { TodoListComponent } from 'app/main/apps/todo/todo-list/todo-list.component';
 | 
			
		||||
import { TodoDetailsComponent } from 'app/main/apps/todo/todo-details/todo-details.component';
 | 
			
		||||
@ -64,7 +65,7 @@ const routes: Routes = [
 | 
			
		||||
@NgModule({
 | 
			
		||||
    declarations: [
 | 
			
		||||
        TodoComponent,
 | 
			
		||||
        TodoMainSidenavComponent,
 | 
			
		||||
        TodoMainSidebarComponent,
 | 
			
		||||
        TodoListItemComponent,
 | 
			
		||||
        TodoListComponent,
 | 
			
		||||
        TodoDetailsComponent
 | 
			
		||||
@ -81,11 +82,11 @@ const routes: Routes = [
 | 
			
		||||
        MatMenuModule,
 | 
			
		||||
        MatRippleModule,
 | 
			
		||||
        MatSelectModule,
 | 
			
		||||
        MatSidenavModule,
 | 
			
		||||
 | 
			
		||||
        NgxDnDModule,
 | 
			
		||||
 | 
			
		||||
        FuseSharedModule
 | 
			
		||||
        FuseSharedModule,
 | 
			
		||||
        FuseSidebarModule
 | 
			
		||||
    ],
 | 
			
		||||
    providers   : [
 | 
			
		||||
        TodoService
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDEBAR -->
 | 
			
		||||
@ -42,5 +43,6 @@
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDEBAR -->
 | 
			
		||||
@ -42,5 +43,6 @@
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDEBAR -->
 | 
			
		||||
@ -42,5 +43,6 @@
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / HEADER -->
 | 
			
		||||
 | 
			
		||||
    <!-- CONTENT -->
 | 
			
		||||
    <div class="content">
 | 
			
		||||
 | 
			
		||||
        <!-- SIDEBAR -->
 | 
			
		||||
@ -42,5 +43,6 @@
 | 
			
		||||
        <!-- / CENTER -->
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- / CONTENT -->
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user