[ADF-2626] added preserved state functionality for sidenav component

This commit is contained in:
georgiana-roman
2018-05-07 18:32:14 +03:00
parent 96fddbdc39
commit c5479dc9c2
9 changed files with 104 additions and 9 deletions

View File

@@ -0,0 +1,39 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2018 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { Pipe, PipeTransform } from '@angular/core';
import { AppConfigService } from './../app-config/app-config.service';
@Pipe({
name: 'appConfig',
pure: true
})
export class AppConfigPipe implements PipeTransform {
constructor(private config: AppConfigService) {}
transform(value: string, fallback: any): any {
return this.config.get(value, fallback);
}
}

View File

@@ -24,6 +24,7 @@ import { NodeNameTooltipPipe } from './node-name-tooltip.pipe';
import { HighlightPipe } from './text-highlight.pipe';
import { TimeAgoPipe } from './time-ago.pipe';
import { InitialUsernamePipe } from './user-initial.pipe';
import { AppConfigPipe } from './app-config.pipe';
@NgModule({
imports: [
@@ -35,7 +36,8 @@ import { InitialUsernamePipe } from './user-initial.pipe';
TimeAgoPipe,
MimeTypeIconPipe,
InitialUsernamePipe,
NodeNameTooltipPipe
NodeNameTooltipPipe,
AppConfigPipe
],
providers: [
FileSizePipe,
@@ -43,7 +45,8 @@ import { InitialUsernamePipe } from './user-initial.pipe';
TimeAgoPipe,
MimeTypeIconPipe,
InitialUsernamePipe,
NodeNameTooltipPipe
NodeNameTooltipPipe,
AppConfigPipe
],
exports: [
FileSizePipe,
@@ -51,7 +54,8 @@ import { InitialUsernamePipe } from './user-initial.pipe';
TimeAgoPipe,
MimeTypeIconPipe,
InitialUsernamePipe,
NodeNameTooltipPipe
NodeNameTooltipPipe,
AppConfigPipe
]
})
export class PipeModule {

View File

@@ -21,5 +21,7 @@ export * from './node-name-tooltip.pipe';
export * from './text-highlight.pipe';
export * from './time-ago.pipe';
export * from './user-initial.pipe';
export * from './app-config.pipe';
export * from './pipe.module';

View File

@@ -23,4 +23,4 @@
</adf-layout-container>
</div>
<ng-template #emptyTemplate></ng-template>
<ng-template #emptyTemplate></ng-template>

View File

@@ -22,6 +22,9 @@ import { SidenavLayoutHeaderDirective } from '../../directives/sidenav-layout-he
import { SidenavLayoutNavigationDirective } from '../../directives/sidenav-layout-navigation.directive';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
import { AppConfigService } from './../../../app-config/app-config.service';
import { StorageService } from './../../../services/storage.service';
@Component({
selector: 'adf-sidenav-layout',
@@ -56,7 +59,9 @@ export class SidenavLayoutComponent implements OnInit, AfterViewInit, OnDestroy
isMenuMinimized: () => this.isMenuMinimized
};
constructor(private mediaMatcher: MediaMatcher) {
constructor(private mediaMatcher: MediaMatcher, private config: AppConfigService, private storage: StorageService) {
this.onMediaQueryChange = this.onMediaQueryChange.bind(this);
}
@@ -82,6 +87,8 @@ export class SidenavLayoutComponent implements OnInit, AfterViewInit, OnDestroy
}
toggleMenu() {
const preserve = this.config.get<string>('sideNav.preserveState');
if (!this.mediaQueryList.matches) {
this.isMenuMinimized = !this.isMenuMinimized;
} else {
@@ -89,6 +96,10 @@ export class SidenavLayoutComponent implements OnInit, AfterViewInit, OnDestroy
}
this.container.toggleMenu();
if (preserve) {
this.storage.setItem('openedSidenav', <any> !this.isMenuMinimized);
}
}
get isMenuMinimized() {