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