mirror of
				https://github.com/richard-loafle/fuse-angular.git
				synced 2025-10-31 14:23:33 +00:00 
			
		
		
		
	Merge branch 'master' into skeleton
This commit is contained in:
		
						commit
						605f4d9463
					
				
							
								
								
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "fuse", |   "name": "fuse", | ||||||
|   "version": "5.2.9", |   "version": "5.2.10", | ||||||
|   "lockfileVersion": 1, |   "lockfileVersion": 1, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "fuse", |   "name": "fuse", | ||||||
|   "version": "5.2.9", |   "version": "5.2.10", | ||||||
|   "license": "https://themeforest.net/licenses/terms/regular", |   "license": "https://themeforest.net/licenses/terms/regular", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "ng": "ng", |     "ng": "ng", | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| import { Component, ElementRef, HostBinding, HostListener, Inject, Input, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core'; | import { Component, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core'; | ||||||
| import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations'; | import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations'; | ||||||
| import { ObservableMedia } from '@angular/flex-layout'; | import { ObservableMedia } from '@angular/flex-layout'; | ||||||
| import { Subscription } from 'rxjs/Subscription'; | import { Subscription } from 'rxjs/Subscription'; | ||||||
| 
 | 
 | ||||||
| import { FuseSidebarService } from './sidebar.service'; | import { FuseSidebarService } from './sidebar.service'; | ||||||
| import { FuseMatchMediaService } from '@fuse/services/match-media.service'; | import { FuseMatchMediaService } from '@fuse/services/match-media.service'; | ||||||
| import { DOCUMENT } from '@angular/common'; | import { FuseConfigService } from '@fuse/services/config.service'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|     selector     : 'fuse-sidebar', |     selector     : 'fuse-sidebar', | ||||||
| @ -21,7 +21,7 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|     // Align
 |     // Align
 | ||||||
|     @Input() |     @Input() | ||||||
|     align: string; |     align: 'left' | 'right'; | ||||||
| 
 | 
 | ||||||
|     // Open
 |     // Open
 | ||||||
|     @HostBinding('class.open') |     @HostBinding('class.open') | ||||||
| @ -38,21 +38,57 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|     // Folded
 |     // Folded
 | ||||||
|     @HostBinding('class.folded') |     @HostBinding('class.folded') | ||||||
|     @Input() |     @Input() | ||||||
|     set folded(value) |     set folded(value: boolean) | ||||||
|     { |     { | ||||||
|  |         // Only work if the sidebar is not closed
 | ||||||
|  |         if ( !this.opened ) | ||||||
|  |         { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Set the folded
 | ||||||
|         this._folded = value; |         this._folded = value; | ||||||
| 
 | 
 | ||||||
|         if ( value ) |         // Programmatically add/remove margin to the element
 | ||||||
|  |         // that comes after or before based on the alignment
 | ||||||
|  |         let sibling, | ||||||
|  |             styleRule; | ||||||
|  | 
 | ||||||
|  |         const styleValue = '64px'; | ||||||
|  | 
 | ||||||
|  |         // Get the sibling and set the style rule
 | ||||||
|  |         if ( this.align === 'left' ) | ||||||
|         { |         { | ||||||
|             this.fold(); |             sibling = this.elementRef.nativeElement.nextElementSibling; | ||||||
|  |             styleRule = 'marginLeft'; | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|             this.unfold(); |             sibling = this.elementRef.nativeElement.previousElementSibling; | ||||||
|  |             styleRule = 'marginRight'; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // If there is no sibling, return...
 | ||||||
|  |         if ( !sibling ) | ||||||
|  |         { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // If folded...
 | ||||||
|  |         if ( value ) | ||||||
|  |         { | ||||||
|  |             // Set the style
 | ||||||
|  |             this.renderer.setStyle(sibling, styleRule, styleValue); | ||||||
|  |         } | ||||||
|  |         // If unfolded...
 | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             // Remove the style
 | ||||||
|  |             this.renderer.removeStyle(sibling, styleRule); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     get folded() |     get folded(): boolean | ||||||
|     { |     { | ||||||
|         return this._folded; |         return this._folded; | ||||||
|     } |     } | ||||||
| @ -62,31 +98,31 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|     unfolded: boolean; |     unfolded: boolean; | ||||||
| 
 | 
 | ||||||
|     // Private
 |     // Private
 | ||||||
|     private _folded = false; |     private _folded: boolean; | ||||||
|     private _wasActive: boolean; |     private _wasActive: boolean; | ||||||
|     private _backdrop: HTMLElement | null = null; |     private _backdrop: HTMLElement | null = null; | ||||||
|     private _player: AnimationPlayer; |     private _player: AnimationPlayer; | ||||||
|     private _matchMediaWatcher: Subscription; |     private _onMediaChangeSubscription: Subscription; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Constructor |      * Constructor | ||||||
|      * |      * | ||||||
|      * @param renderer |      * @param {Renderer2} renderer | ||||||
|      * @param elementRef |      * @param {ElementRef} elementRef | ||||||
|      * @param animationBuilder |      * @param {AnimationBuilder} animationBuilder | ||||||
|      * @param sidebarService |      * @param {ObservableMedia} observableMedia | ||||||
|      * @param matchMedia |      * @param {FuseConfigService} fuseConfigService | ||||||
|      * @param media |      * @param {FuseSidebarService} fuseSidebarService | ||||||
|      * @param document |      * @param {FuseMatchMediaService} fuseMatchMediaService | ||||||
|      */ |      */ | ||||||
|     constructor( |     constructor( | ||||||
|         private renderer: Renderer2, |         private renderer: Renderer2, | ||||||
|         private elementRef: ElementRef, |         private elementRef: ElementRef, | ||||||
|         private animationBuilder: AnimationBuilder, |         private animationBuilder: AnimationBuilder, | ||||||
|         private sidebarService: FuseSidebarService, |         private observableMedia: ObservableMedia, | ||||||
|         private matchMedia: FuseMatchMediaService, |         private fuseConfigService: FuseConfigService, | ||||||
|         private media: ObservableMedia, |         private fuseSidebarService: FuseSidebarService, | ||||||
|         @Inject(DOCUMENT) private document: any |         private fuseMatchMediaService: FuseMatchMediaService | ||||||
|     ) |     ) | ||||||
|     { |     { | ||||||
|         // Set the defaults
 |         // Set the defaults
 | ||||||
| @ -101,7 +137,7 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|     ngOnInit(): void |     ngOnInit(): void | ||||||
|     { |     { | ||||||
|         // Register the sidebar
 |         // Register the sidebar
 | ||||||
|         this.sidebarService.register(this.name, this); |         this.fuseSidebarService.register(this.name, this); | ||||||
| 
 | 
 | ||||||
|         // Setup alignment
 |         // Setup alignment
 | ||||||
|         this._setupAlignment(); |         this._setupAlignment(); | ||||||
| @ -115,27 +151,35 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|      */ |      */ | ||||||
|     ngOnDestroy(): void |     ngOnDestroy(): void | ||||||
|     { |     { | ||||||
|         // Unregister the sidebar
 |         // If the sidebar is folded, unfold it to revert modifications
 | ||||||
|         this.sidebarService.unregister(this.name); |         if ( this.folded ) | ||||||
|  |         { | ||||||
|  |             this.unfold(); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         // Unregister the media watcher
 |         // Unregister the sidebar
 | ||||||
|         this._matchMediaWatcher.unsubscribe(); |         this.fuseSidebarService.unregister(this.name); | ||||||
|  | 
 | ||||||
|  |         // Unsubscribe from the media watcher subscription
 | ||||||
|  |         this._onMediaChangeSubscription.unsubscribe(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Setup the alignment |      * Set the sidebar alignment | ||||||
|      * |      * | ||||||
|      * @private |      * @private | ||||||
|      */ |      */ | ||||||
|     private _setupAlignment(): void |     private _setupAlignment(): void | ||||||
|     { |     { | ||||||
|         if ( this.align === 'left' ) |         // Add the correct class name to the sidebar
 | ||||||
|  |         // element depending on the align attribute
 | ||||||
|  |         if ( this.align === 'right' ) | ||||||
|         { |         { | ||||||
|             this.renderer.addClass(this.elementRef.nativeElement, 'left-aligned'); |             this.renderer.addClass(this.elementRef.nativeElement, 'right-aligned'); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|             this.renderer.addClass(this.elementRef.nativeElement, 'right-aligned'); |             this.renderer.addClass(this.elementRef.nativeElement, 'left-aligned'); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -156,12 +200,12 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|         this._wasActive = false; |         this._wasActive = false; | ||||||
| 
 | 
 | ||||||
|         // Act on every media change
 |         // Act on every media change
 | ||||||
|         this._matchMediaWatcher = |         this._onMediaChangeSubscription = | ||||||
| 
 | 
 | ||||||
|             this.matchMedia.onMediaChange.subscribe(() => { |             this.fuseMatchMediaService.onMediaChange.subscribe(() => { | ||||||
| 
 | 
 | ||||||
|                 // Get the active status
 |                 // Get the active status
 | ||||||
|                 const isActive = this.media.isActive(this.lockedOpen); |                 const isActive = this.observableMedia.isActive(this.lockedOpen); | ||||||
| 
 | 
 | ||||||
|                 // If the both status are the same, don't act
 |                 // If the both status are the same, don't act
 | ||||||
|                 if ( this._wasActive === isActive ) |                 if ( this._wasActive === isActive ) | ||||||
| @ -169,14 +213,24 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 // Store the new active status
 |  | ||||||
|                 this._wasActive = isActive; |  | ||||||
| 
 |  | ||||||
|                 // Activate the lockedOpen
 |                 // Activate the lockedOpen
 | ||||||
|                 if ( isActive ) |                 if ( isActive ) | ||||||
|                 { |                 { | ||||||
|                     // Set the lockedOpen status
 |                     // Set the lockedOpen status
 | ||||||
|                     this.isLockedOpen = true; |                     this.isLockedOpen = true; | ||||||
|  | 
 | ||||||
|  |                     // Force the the opened status to true
 | ||||||
|  |                     this.opened = true; | ||||||
|  | 
 | ||||||
|  |                     // Read the folded setting from the config
 | ||||||
|  |                     // and fold the sidebar if it's true
 | ||||||
|  |                     if ( this.fuseConfigService.config.layout.navigationFolded ) | ||||||
|  |                     { | ||||||
|  |                         this.fold(); | ||||||
|  |                     } | ||||||
|  | 
 | ||||||
|  |                     // Hide the backdrop if any exists
 | ||||||
|  |                     this.hideBackdrop(); | ||||||
|                 } |                 } | ||||||
|                 // De-Activate the lockedOpen
 |                 // De-Activate the lockedOpen
 | ||||||
|                 else |                 else | ||||||
| @ -186,7 +240,13 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|                     // Unfold the sidebar in case if it was folded
 |                     // Unfold the sidebar in case if it was folded
 | ||||||
|                     this.unfold(); |                     this.unfold(); | ||||||
|  | 
 | ||||||
|  |                     // Force the the opened status to close
 | ||||||
|  |                     this.opened = false; | ||||||
|                 } |                 } | ||||||
|  | 
 | ||||||
|  |                 // Store the new active status
 | ||||||
|  |                 this._wasActive = isActive; | ||||||
|             }); |             }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -205,9 +265,6 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|         // Set the opened status
 |         // Set the opened status
 | ||||||
|         this.opened = true; |         this.opened = true; | ||||||
| 
 |  | ||||||
|         // Add a css class to the body
 |  | ||||||
|         this.renderer.addClass(this.document.body, 'fuse-sidebar-opened'); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -215,7 +272,7 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|      */ |      */ | ||||||
|     close(): void |     close(): void | ||||||
|     { |     { | ||||||
|         if ( !this.opened ) |         if ( !this.opened || this.isLockedOpen ) | ||||||
|         { |         { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @ -225,9 +282,6 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|         // Set the opened status
 |         // Set the opened status
 | ||||||
|         this.opened = false; |         this.opened = false; | ||||||
| 
 |  | ||||||
|         // Remove the css class from the body
 |  | ||||||
|         this.renderer.removeClass(this.document.body, 'fuse-sidebar-opened'); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -259,9 +313,6 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|         // Unfold the sidebar temporarily
 |         // Unfold the sidebar temporarily
 | ||||||
|         this.unfolded = true; |         this.unfolded = true; | ||||||
| 
 |  | ||||||
|         // Add a css class to the body
 |  | ||||||
|         this.renderer.addClass(this.document.body, 'fuse-sidebar-folded-unfolded'); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -278,9 +329,6 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
| 
 | 
 | ||||||
|         // Fold the sidebar back
 |         // Fold the sidebar back
 | ||||||
|         this.unfolded = false; |         this.unfolded = false; | ||||||
| 
 |  | ||||||
|         // Remove the css class from the body
 |  | ||||||
|         this.renderer.removeClass(this.document.body, 'fuse-sidebar-folded-unfolded'); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -288,8 +336,14 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|      */ |      */ | ||||||
|     fold(): void |     fold(): void | ||||||
|     { |     { | ||||||
|         // Add a css class to the body
 |         // Only work if the sidebar is not folded
 | ||||||
|         this.renderer.addClass(this.document.body, 'fuse-sidebar-folded'); |         if ( this.folded ) | ||||||
|  |         { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Fold
 | ||||||
|  |         this.folded = true; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -297,8 +351,14 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|      */ |      */ | ||||||
|     unfold(): void |     unfold(): void | ||||||
|     { |     { | ||||||
|         // Remove the css class from the body
 |         // Only work if the sidebar is folded
 | ||||||
|         this.renderer.removeClass(this.document.body, 'fuse-sidebar-folded'); |         if ( !this.folded ) | ||||||
|  |         { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Unfold
 | ||||||
|  |         this.folded = false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -306,7 +366,14 @@ export class FuseSidebarComponent implements OnInit, OnDestroy | |||||||
|      */ |      */ | ||||||
|     toggleFold(): void |     toggleFold(): void | ||||||
|     { |     { | ||||||
|         this.folded = !this.folded; |         if ( this.folded ) | ||||||
|  |         { | ||||||
|  |             this.unfold(); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             this.fold(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
|     <head> |     <head> | ||||||
| 
 | 
 | ||||||
|         <title>Fuse2 - Angular 5+ Material Design Admin Template</title> |         <title>Fuse - Angular 5+ Material Design Admin Template</title> | ||||||
|         <base href="/"> |         <base href="/"> | ||||||
| 
 | 
 | ||||||
|         <meta charset="utf-8"> |         <meta charset="utf-8"> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user