Entirely changed the navigation model structure (sorry!)

+ Fixed: Horizontal and Vertical navigation must be able to use the same model structure
+ Fixed: Collapsable nav item that has the active menu shouldn't be collapsed when other collapsables toggles
This commit is contained in:
Sercan Yemen 2017-09-21 12:08:52 +03:00
parent 769e67c2f3
commit b9198e3717
15 changed files with 215 additions and 544 deletions

View File

@ -9,9 +9,8 @@
<div class="{{fuseSettings.colorClasses.navbar}}"> <div class="{{fuseSettings.colorClasses.navbar}}">
<ng-container *ngFor="let item of item.children"> <ng-container *ngFor="let item of item.children">
<fuse-nav-horizontal-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-horizontal-item> <fuse-nav-horizontal-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-horizontal-item>
<fuse-nav-horizontal-collapse *ngIf="item.type=='nav-collapse'" <fuse-nav-horizontal-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-horizontal-collapse>
[item]="item"></fuse-nav-horizontal-collapse>
</ng-container> </ng-container>
</div> </div>

View File

@ -1,27 +1,32 @@
<div id="main-navigation" class="nav" [ngClass]="{'horizontal':layout === 'horizontal'}"> <div id="main-navigation" class="nav"
[ngClass]="{'horizontal':layout === 'horizontal', 'vertical':layout === 'vertical'}">
<!-- Vertical Navigation Layout -->
<ng-container *ngIf="layout === 'vertical'"> <ng-container *ngIf="layout === 'vertical'">
<ng-container *ngFor="let item of verticalNavigation"> <ng-container *ngFor="let item of navigationModel">
<fuse-nav-vertical-subheader *ngIf="item.type=='subheader'" [item]="item"></fuse-nav-vertical-subheader> <fuse-nav-vertical-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
<fuse-nav-vertical-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-vertical-item> <fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
<fuse-nav-vertical-collapse *ngIf="item.type=='nav-collapse'" [item]="item"></fuse-nav-vertical-collapse> <fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
</ng-container> </ng-container>
</ng-container> </ng-container>
<!-- / Vertical Navigation Layout -->
<!-- Horizontal Navigation Layout -->
<ng-container *ngIf="layout === 'horizontal'"> <ng-container *ngIf="layout === 'horizontal'">
<ng-container *ngFor="let item of horizontalNavigation"> <ng-container *ngFor="let item of navigationModel">
<fuse-nav-horizontal-collapse *ngIf="item.type=='group'" [item]="item"></fuse-nav-horizontal-collapse>
<fuse-nav-horizontal-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-horizontal-collapse>
<fuse-nav-horizontal-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-horizontal-item> <fuse-nav-horizontal-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-horizontal-item>
<fuse-nav-horizontal-collapse *ngIf="item.type=='nav-collapse'"
[item]="item"></fuse-nav-horizontal-collapse>
</ng-container> </ng-container>
</ng-container> </ng-container>
<!-- / Horizontal Navigation Layout -->
</div> </div>

View File

@ -9,15 +9,13 @@ import { FuseNavigationService } from './navigation.service';
}) })
export class FuseNavigationComponent export class FuseNavigationComponent
{ {
verticalNavigation: any[]; navigationModel: any[];
horizontalNavigation: any[];
@Input('layout') layout = 'vertical'; @Input('layout') layout = 'vertical';
constructor(private navigationService: FuseNavigationService) constructor(private navigationService: FuseNavigationService)
{ {
this.verticalNavigation = navigationService.getNavigation('verticalNavItems'); this.navigationModel = navigationService.getNavigationModel();
this.horizontalNavigation = navigationService.getNavigation('horizontalNavItems');
} }
} }

View File

@ -4,7 +4,7 @@ import { RouterModule } from '@angular/router';
import { FuseNavigationComponent } from './navigation.component'; import { FuseNavigationComponent } from './navigation.component';
import { FuseNavVerticalItemComponent } from './vertical/nav-item/nav-vertical-item.component'; import { FuseNavVerticalItemComponent } from './vertical/nav-item/nav-vertical-item.component';
import { FuseNavVerticalCollapseComponent } from './vertical/nav-collapse/nav-vertical-collapse.component'; import { FuseNavVerticalCollapseComponent } from './vertical/nav-collapse/nav-vertical-collapse.component';
import { FuseNavVerticalSubheaderComponent } from './vertical/nav-subheader/nav-vertical-subheader.component'; import { FuseNavVerticalGroupComponent } from './vertical/nav-group/nav-vertical-group.component';
import { FuseNavHorizontalItemComponent } from './horizontal/nav-item/nav-horizontal-item.component'; import { FuseNavHorizontalItemComponent } from './horizontal/nav-item/nav-horizontal-item.component';
import { FuseNavHorizontalCollapseComponent } from './horizontal/nav-collapse/nav-horizontal-collapse.component'; import { FuseNavHorizontalCollapseComponent } from './horizontal/nav-collapse/nav-horizontal-collapse.component';
@ -18,7 +18,7 @@ import { FuseNavHorizontalCollapseComponent } from './horizontal/nav-collapse/na
], ],
declarations: [ declarations: [
FuseNavigationComponent, FuseNavigationComponent,
FuseNavVerticalSubheaderComponent, FuseNavVerticalGroupComponent,
FuseNavVerticalItemComponent, FuseNavVerticalItemComponent,
FuseNavVerticalCollapseComponent, FuseNavVerticalCollapseComponent,
FuseNavHorizontalItemComponent, FuseNavHorizontalItemComponent,

View File

@ -1,25 +1,25 @@
import { EventEmitter, Injectable } from '@angular/core'; import { EventEmitter, Injectable } from '@angular/core';
import { FuseNavigation } from '../../../navigation.model'; import { NavigationModel } from '../../../navigation.model';
@Injectable() @Injectable()
export class FuseNavigationService export class FuseNavigationService
{ {
onNavCollapseToggled = new EventEmitter<any>(); onNavCollapseToggled = new EventEmitter<any>();
navigation: FuseNavigation; navigationModel: NavigationModel;
flatNavigation: any[] = []; flatNavigation: any[] = [];
constructor() constructor()
{ {
this.navigation = new FuseNavigation(); this.navigationModel = new NavigationModel();
} }
/** /**
* Get navigation array * Get navigation model
* @returns {any[]} * @returns {any[]}
*/ */
getNavigation(item) getNavigationModel()
{ {
return this.navigation[item]; return this.navigationModel.model;
} }
/** /**
@ -31,7 +31,7 @@ export class FuseNavigationService
{ {
if ( !navigationItems ) if ( !navigationItems )
{ {
navigationItems = this.navigation; navigationItems = this.navigationModel;
} }
for ( const navItem of navigationItems ) for ( const navItem of navigationItems )

View File

@ -5,7 +5,7 @@
</a> </a>
<div class="children" [@slideInOut]="isOpen"> <div class="children" [@slideInOut]="isOpen">
<ng-container *ngFor="let item of item.children"> <ng-container *ngFor="let item of item.children">
<fuse-nav-vertical-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-vertical-item> <fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
<fuse-nav-vertical-collapse *ngIf="item.type=='nav-collapse'" [item]="item"></fuse-nav-vertical-collapse> <fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
</ng-container> </ng-container>
</div> </div>

View File

@ -15,7 +15,10 @@ export class FuseNavVerticalCollapseComponent implements OnInit
@HostBinding('class') classes = 'nav-collapse nav-item'; @HostBinding('class') classes = 'nav-collapse nav-item';
@HostBinding('class.open') public isOpen = false; @HostBinding('class.open') public isOpen = false;
constructor(private navigationService: FuseNavigationService, private router: Router) constructor(
private navigationService: FuseNavigationService,
private router: Router
)
{ {
// Listen for route changes // Listen for route changes
router.events.subscribe( router.events.subscribe(
@ -49,6 +52,13 @@ export class FuseNavVerticalCollapseComponent implements OnInit
return; return;
} }
// Check if the url can be found in
// one of the children of this item
if ( this.isUrlInChildren(this.item, this.router.url) )
{
return;
}
// If the clicked item is not this item, collapse... // If the clicked item is not this item, collapse...
if ( this.item !== clickedItem ) if ( this.item !== clickedItem )
{ {

View File

@ -0,0 +1,10 @@
<div class="group-title">
<span class="hint-text">{{ item.title }}</span>
</div>
<div class="group-items">
<ng-container *ngFor="let item of item.children">
<fuse-nav-vertical-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
<fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
<fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
</ng-container>
</div>

View File

@ -0,0 +1,23 @@
:host {
.folded:not(.folded-open) & {
> .group-title {
align-items: center;
> span {
opacity: 0;
transition: opacity 200ms ease;
}
&:before {
content: '';
display: block;
position: absolute;
min-width: 1.6rem;
border-top: 2px solid;
opacity: 0.2;
}
}
}
}

View File

@ -0,0 +1,21 @@
import { Component, HostBinding, Input, OnInit } from '@angular/core';
@Component({
selector : 'fuse-nav-vertical-group',
templateUrl: './nav-vertical-group.component.html',
styleUrls : ['./nav-vertical-group.component.scss']
})
export class FuseNavVerticalGroupComponent implements OnInit
{
@HostBinding('class') classes = 'nav-group';
@Input() item: any;
constructor()
{
}
ngOnInit()
{
}
}

View File

@ -1 +0,0 @@
<span class="hint-text">{{ item.title }}</span>

View File

@ -1,20 +0,0 @@
:host {
.folded:not(.folded-open) & {
&:before {
content: '';
display: block;
position: absolute;
min-width: 1.6rem;
border-top: 2px solid;
opacity: 0.2;
}
> span {
opacity: 0;
transition: opacity 200ms ease;
}
}
}

View File

@ -1,21 +0,0 @@
import { Component, HostBinding, Input, OnInit } from '@angular/core';
@Component({
selector : 'fuse-nav-vertical-subheader',
templateUrl: './nav-vertical-subheader.component.html',
styleUrls : ['./nav-vertical-subheader.component.scss']
})
export class FuseNavVerticalSubheaderComponent implements OnInit
{
@HostBinding('class') classes = 'nav-subheader';
@Input() item: any;
constructor()
{
}
ngOnInit()
{
}
}

View File

@ -11,6 +11,21 @@
white-space: nowrap; white-space: nowrap;
} }
.nav-group {
> .group-title {
position: relative;
display: flex;
align-items: center;
height: 48px;
font-weight: 500;
padding-left: 24px;
margin-top: 8px;
font-size: 12px;
white-space: nowrap;
}
}
.nav-item { .nav-item {
.nav-link { .nav-link {
@ -119,6 +134,31 @@
} }
} }
> .nav-group {
> .group-items {
> .nav-collapse {
background: transparent;
transition: background 200ms ease-in-out;
&.open {
background: rgba(0, 0, 0, 0.12);
}
}
}
}
&.vertical {
.nav-group {
.group-title {
text-transform: uppercase;
}
}
}
&.horizontal { &.horizontal {
display: flex; display: flex;
flex-direction: row; flex-direction: row;

View File

@ -1,415 +1,22 @@
export class FuseNavigation export class NavigationModel
{ {
public verticalNavItems: any[]; model: any[];
public horizontalNavItems: any[];
constructor() constructor()
{ {
this.verticalNavItems = [ this.model = [
{
'title': 'APPS',
'type' : 'subheader'
},
{
'title' : 'Dashboards',
'type' : 'nav-collapse',
'icon' : 'dashboard',
'children': [
{
'type' : 'nav-item',
'title': 'Project',
'url' : '/apps/dashboards/project'
}
]
},
{
'title': 'Calendar',
'type' : 'nav-item',
'icon' : 'today',
'url' : '/apps/calendar'
},
{
'title': 'Mail',
'type' : 'nav-item',
'icon' : 'email',
'url' : '/apps/mail',
'badge': {
'title': 25,
'bg' : '#F44336',
'fg' : '#FFFFFF'
}
},
{
'title': 'Chat',
'type' : 'nav-item',
'icon' : 'chat',
'url' : '/apps/chat',
'badge': {
'title': 13,
'bg' : '#09d261',
'fg' : '#FFFFFF'
}
},
{
'title': 'File Manager',
'type' : 'nav-item',
'icon' : 'folder',
'url' : '/apps/file-manager'
},
{
'title': 'Contacts',
'type' : 'nav-item',
'icon' : 'account_box',
'url' : '/apps/contacts'
},
{
'title': 'To-Do',
'type' : 'nav-item',
'icon' : 'check_box',
'url' : '/apps/todo',
'badge': {
'title': 3,
'bg' : '#FF6F00',
'fg' : '#FFFFFF'
}
},
{
'title': 'Scrumboard',
'type' : 'nav-item',
'icon' : 'assessment',
'url' : '/apps/scrumboard'
},
{
'title': 'PAGES',
'type' : 'subheader'
},
{
'title' : 'Authentication',
'type' : 'nav-collapse',
'icon' : 'lock',
'children': [
{
'title': 'Login',
'type' : 'nav-item',
'url' : '/pages/auth/login'
},
{
'title': 'Login v2',
'type' : 'nav-item',
'url' : '/pages/auth/login-2'
},
{
'title': 'Register',
'type' : 'nav-item',
'url' : '/pages/auth/register'
},
{
'title': 'Register v2',
'type' : 'nav-item',
'url' : '/pages/auth/register-2'
},
{
'title': 'Forgot Password',
'type' : 'nav-item',
'url' : '/pages/auth/forgot-password'
},
{
'title': 'Reset Password',
'type' : 'nav-item',
'url' : '/pages/auth/reset-password'
},
{
'title': 'Lock Screen',
'type' : 'nav-item',
'url' : '/pages/auth/lock'
}
]
},
{
'title': 'Coming Soon',
'type' : 'nav-item',
'icon' : 'alarm',
'url' : '/pages/coming-soon'
},
{
'title' : 'Errors',
'type' : 'nav-collapse',
'icon' : 'error',
'children': [
{
'title': '404',
'type' : 'nav-item',
'url' : '/pages/errors/error-404'
},
{
'title': '500',
'type' : 'nav-item',
'url' : '/pages/errors/error-500'
}
]
},
{
'title' : 'Invoice',
'type' : 'nav-collapse',
'icon' : 'receipt',
'children': [
{
'title': 'Modern',
'type' : 'nav-item',
'url' : '/pages/invoices/modern'
},
{
'title': 'Compact',
'type' : 'nav-item',
'url' : '/pages/invoices/compact'
}
]
},
{
'title': 'Maintenance',
'type' : 'nav-item',
'icon' : 'build',
'url' : '/pages/maintenance'
},
{
'title': 'Profile',
'type' : 'nav-item',
'icon' : 'person',
'url' : '/pages/profile'
},
{
'title': 'Search',
'type' : 'nav-item',
'icon' : 'search',
'url' : '/pages/search'
},
{
'title': 'USER INTERFACE',
'type' : 'subheader'
},
{
'title': 'Forms',
'type' : 'nav-item',
'icon' : 'web_asset',
'url' : '/ui/forms'
},
{
'title': 'Icons',
'type' : 'nav-item',
'icon' : 'photo',
'url' : '/ui/icons'
},
{
'title': 'Typography',
'type' : 'nav-item',
'icon' : 'text_fields',
'url' : '/ui/typography'
},
{
'title': 'Helper Classes',
'type' : 'nav-item',
'icon' : 'help',
'url' : '/ui/helper-classes'
},
{
'title' : 'Page Layouts',
'type' : 'nav-collapse',
'icon' : 'view_quilt',
'children': [
{
'title' : 'Carded',
'type' : 'nav-collapse',
'children': [
{
'title': 'Full Width',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/full-width'
},
{
'title': 'Full Width 2',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/full-width-2'
},
{
'title': 'Left Sidenav',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/left-sidenav'
},
{
'title': 'Left Sidenav 2',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/left-sidenav-2'
},
{
'title': 'Right Sidenav',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/right-sidenav'
},
{
'title': 'Right Sidenav 2',
'type' : 'nav-item',
'url' : '/ui/page-layouts/carded/right-sidenav-2'
}
]
},
{
'title' : 'Simple',
'type' : 'nav-collapse',
'children': [
{
'title': 'Full Width',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/full-width'
},
{
'title': 'Left Sidenav',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/left-sidenav'
},
{
'title': 'Left Sidenav 2',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/left-sidenav-2'
},
{
'title': 'Left Sidenav 3',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/left-sidenav-3'
},
{
'title': 'Right Sidenav',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/right-sidenav'
},
{
'title': 'Right Sidenav 2',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/right-sidenav-2'
},
{
'title': 'Right Sidenav 3',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/right-sidenav-3'
},
{
'title': 'Tabbed',
'type' : 'nav-item',
'url' : '/ui/page-layouts/simple/tabbed'
}
]
},
{
'title': 'Blank',
'type' : 'nav-item',
'url' : '/ui/page-layouts/blank'
}
]
},
{
'title': 'Colors',
'type' : 'nav-item',
'icon' : 'color_lens',
'url' : '/ui/colors'
},
{
'title': 'SERVICES',
'type' : 'subheader'
},
{
'title': 'Config',
'type' : 'nav-item',
'icon' : 'settings',
'url' : '/services/config'
},
{
'title': 'Splash Screen',
'type' : 'nav-item',
'icon' : 'settings',
'url' : '/services/splash-screen'
},
{
'title': 'COMPONENTS',
'type' : 'subheader'
},
{
'title': 'Countdown',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/countdown'
},
{
'title': 'Highlight.js',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/highlightjs'
},
{
'title': 'Material Color Picker',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/material-color-picker'
},
{
'title': 'Navigation',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/navigation'
},
{
'title': 'Price Tables',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/price-tables'
},
{
'title': 'Search Bar',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/search-bar'
},
{
'title': 'Shortcuts',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/shortcuts'
},
{
'title': 'Widget',
'type' : 'nav-item',
'icon' : 'settings_input_component',
'url' : '/components/widget'
},
{
'title': '3RD PARTY COMPONENTS',
'type' : 'subheader'
},
{
'title' : 'Datatables',
'type' : 'nav-collapse',
'icon' : 'border_all',
'children': [
{
'title': 'ngx-datatable',
'type' : 'nav-item',
'url' : '/components-third-party/datatables/ngx-datatable'
}
]
}
];
this.horizontalNavItems = [
{ {
'title' : 'Applications', 'title' : 'Applications',
'type' : 'group',
'icon' : 'apps', 'icon' : 'apps',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title' : 'Dashboards', 'title' : 'Dashboards',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'dashboard', 'icon' : 'dashboard',
'children': [ 'children': [
{ {
'type' : 'nav-item', 'type' : 'item',
'title': 'Project', 'title': 'Project',
'url' : '/apps/dashboards/project' 'url' : '/apps/dashboards/project'
} }
@ -417,13 +24,13 @@ export class FuseNavigation
}, },
{ {
'title': 'Calendar', 'title': 'Calendar',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'today', 'icon' : 'today',
'url' : '/apps/calendar' 'url' : '/apps/calendar'
}, },
{ {
'title': 'Mail', 'title': 'Mail',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'email', 'icon' : 'email',
'url' : '/apps/mail', 'url' : '/apps/mail',
'badge': { 'badge': {
@ -434,7 +41,7 @@ export class FuseNavigation
}, },
{ {
'title': 'Chat', 'title': 'Chat',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'chat', 'icon' : 'chat',
'url' : '/apps/chat', 'url' : '/apps/chat',
'badge': { 'badge': {
@ -445,19 +52,19 @@ export class FuseNavigation
}, },
{ {
'title': 'File Manager', 'title': 'File Manager',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'folder', 'icon' : 'folder',
'url' : '/apps/file-manager' 'url' : '/apps/file-manager'
}, },
{ {
'title': 'Contacts', 'title': 'Contacts',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'account_box', 'icon' : 'account_box',
'url' : '/apps/contacts' 'url' : '/apps/contacts'
}, },
{ {
'title': 'To-Do', 'title': 'To-Do',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'check_box', 'icon' : 'check_box',
'url' : '/apps/todo', 'url' : '/apps/todo',
'badge': { 'badge': {
@ -468,7 +75,7 @@ export class FuseNavigation
}, },
{ {
'title': 'Scrumboard', 'title': 'Scrumboard',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'assessment', 'icon' : 'assessment',
'url' : '/apps/scrumboard' 'url' : '/apps/scrumboard'
} }
@ -476,106 +83,106 @@ export class FuseNavigation
}, },
{ {
'title' : 'Pages', 'title' : 'Pages',
'type' : 'group',
'icon' : 'pages', 'icon' : 'pages',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title' : 'Authentication', 'title' : 'Authentication',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'lock', 'icon' : 'lock',
'children': [ 'children': [
{ {
'title': 'Login', 'title': 'Login',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/login' 'url' : '/pages/auth/login'
}, },
{ {
'title': 'Login v2', 'title': 'Login v2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/login-2' 'url' : '/pages/auth/login-2'
}, },
{ {
'title': 'Register', 'title': 'Register',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/register' 'url' : '/pages/auth/register'
}, },
{ {
'title': 'Register v2', 'title': 'Register v2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/register-2' 'url' : '/pages/auth/register-2'
}, },
{ {
'title': 'Forgot Password', 'title': 'Forgot Password',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/forgot-password' 'url' : '/pages/auth/forgot-password'
}, },
{ {
'title': 'Reset Password', 'title': 'Reset Password',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/reset-password' 'url' : '/pages/auth/reset-password'
}, },
{ {
'title': 'Lock Screen', 'title': 'Lock Screen',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/auth/lock' 'url' : '/pages/auth/lock'
} }
] ]
}, },
{ {
'title': 'Coming Soon', 'title': 'Coming Soon',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'alarm', 'icon' : 'alarm',
'url' : '/pages/coming-soon' 'url' : '/pages/coming-soon'
}, },
{ {
'title' : 'Errors', 'title' : 'Errors',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'error', 'icon' : 'error',
'children': [ 'children': [
{ {
'title': '404', 'title': '404',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/errors/error-404' 'url' : '/pages/errors/error-404'
}, },
{ {
'title': '500', 'title': '500',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/errors/error-500' 'url' : '/pages/errors/error-500'
} }
] ]
}, },
{ {
'title' : 'Invoice', 'title' : 'Invoice',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'receipt', 'icon' : 'receipt',
'children': [ 'children': [
{ {
'title': 'Modern', 'title': 'Modern',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/invoices/modern' 'url' : '/pages/invoices/modern'
}, },
{ {
'title': 'Compact', 'title': 'Compact',
'type' : 'nav-item', 'type' : 'item',
'url' : '/pages/invoices/compact' 'url' : '/pages/invoices/compact'
} }
] ]
}, },
{ {
'title': 'Maintenance', 'title': 'Maintenance',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'build', 'icon' : 'build',
'url' : '/pages/maintenance' 'url' : '/pages/maintenance'
}, },
{ {
'title': 'Profile', 'title': 'Profile',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'person', 'icon' : 'person',
'url' : '/pages/profile' 'url' : '/pages/profile'
}, },
{ {
'title': 'Search', 'title': 'Search',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'search', 'icon' : 'search',
'url' : '/pages/search' 'url' : '/pages/search'
} }
@ -583,130 +190,130 @@ export class FuseNavigation
}, },
{ {
'title' : 'User Interface', 'title' : 'User Interface',
'type' : 'group',
'icon' : 'web', 'icon' : 'web',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title': 'Forms', 'title': 'Forms',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'web_asset', 'icon' : 'web_asset',
'url' : '/ui/forms' 'url' : '/ui/forms'
}, },
{ {
'title': 'Icons', 'title': 'Icons',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'photo', 'icon' : 'photo',
'url' : '/ui/icons' 'url' : '/ui/icons'
}, },
{ {
'title': 'Typography', 'title': 'Typography',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'text_fields', 'icon' : 'text_fields',
'url' : '/ui/typography' 'url' : '/ui/typography'
}, },
{ {
'title': 'Helper Classes', 'title': 'Helper Classes',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'help', 'icon' : 'help',
'url' : '/ui/helper-classes' 'url' : '/ui/helper-classes'
}, },
{ {
'title' : 'Page Layouts', 'title' : 'Page Layouts',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'view_quilt', 'icon' : 'view_quilt',
'children': [ 'children': [
{ {
'title' : 'Carded', 'title' : 'Carded',
'type' : 'nav-collapse', 'type' : 'collapse',
'children': [ 'children': [
{ {
'title': 'Full Width', 'title': 'Full Width',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/full-width' 'url' : '/ui/page-layouts/carded/full-width'
}, },
{ {
'title': 'Full Width 2', 'title': 'Full Width 2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/full-width-2' 'url' : '/ui/page-layouts/carded/full-width-2'
}, },
{ {
'title': 'Left Sidenav', 'title': 'Left Sidenav',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/left-sidenav' 'url' : '/ui/page-layouts/carded/left-sidenav'
}, },
{ {
'title': 'Left Sidenav 2', 'title': 'Left Sidenav 2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/left-sidenav-2' 'url' : '/ui/page-layouts/carded/left-sidenav-2'
}, },
{ {
'title': 'Right Sidenav', 'title': 'Right Sidenav',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/right-sidenav' 'url' : '/ui/page-layouts/carded/right-sidenav'
}, },
{ {
'title': 'Right Sidenav 2', 'title': 'Right Sidenav 2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/carded/right-sidenav-2' 'url' : '/ui/page-layouts/carded/right-sidenav-2'
} }
] ]
}, },
{ {
'title' : 'Simple', 'title' : 'Simple',
'type' : 'nav-collapse', 'type' : 'collapse',
'children': [ 'children': [
{ {
'title': 'Full Width', 'title': 'Full Width',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/full-width' 'url' : '/ui/page-layouts/simple/full-width'
}, },
{ {
'title': 'Left Sidenav', 'title': 'Left Sidenav',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/left-sidenav' 'url' : '/ui/page-layouts/simple/left-sidenav'
}, },
{ {
'title': 'Left Sidenav 2', 'title': 'Left Sidenav 2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/left-sidenav-2' 'url' : '/ui/page-layouts/simple/left-sidenav-2'
}, },
{ {
'title': 'Left Sidenav 3', 'title': 'Left Sidenav 3',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/left-sidenav-3' 'url' : '/ui/page-layouts/simple/left-sidenav-3'
}, },
{ {
'title': 'Right Sidenav', 'title': 'Right Sidenav',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/right-sidenav' 'url' : '/ui/page-layouts/simple/right-sidenav'
}, },
{ {
'title': 'Right Sidenav 2', 'title': 'Right Sidenav 2',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/right-sidenav-2' 'url' : '/ui/page-layouts/simple/right-sidenav-2'
}, },
{ {
'title': 'Right Sidenav 3', 'title': 'Right Sidenav 3',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/right-sidenav-3' 'url' : '/ui/page-layouts/simple/right-sidenav-3'
}, },
{ {
'title': 'Tabbed', 'title': 'Tabbed',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/simple/tabbed' 'url' : '/ui/page-layouts/simple/tabbed'
} }
] ]
}, },
{ {
'title': 'Blank', 'title': 'Blank',
'type' : 'nav-item', 'type' : 'item',
'url' : '/ui/page-layouts/blank' 'url' : '/ui/page-layouts/blank'
} }
] ]
}, },
{ {
'title': 'Colors', 'title': 'Colors',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'color_lens', 'icon' : 'color_lens',
'url' : '/ui/colors' 'url' : '/ui/colors'
} }
@ -714,18 +321,18 @@ export class FuseNavigation
}, },
{ {
'title' : 'Services', 'title' : 'Services',
'type' : 'group',
'icon' : 'settings', 'icon' : 'settings',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title': 'Config', 'title': 'Config',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings', 'icon' : 'settings',
'url' : '/services/config' 'url' : '/services/config'
}, },
{ {
'title': 'Splash Screen', 'title': 'Splash Screen',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings', 'icon' : 'settings',
'url' : '/services/splash-screen' 'url' : '/services/splash-screen'
} }
@ -733,78 +340,78 @@ export class FuseNavigation
}, },
{ {
'title' : 'Components', 'title' : 'Components',
'type' : 'group',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title': 'Countdown', 'title': 'Countdown',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/countdown' 'url' : '/components/countdown'
}, },
{ {
'title': 'Highlight.js', 'title': 'Highlight.js',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/highlightjs' 'url' : '/components/highlightjs'
}, },
{ {
'title': 'Material Color Picker', 'title': 'Material Color Picker',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/material-color-picker' 'url' : '/components/material-color-picker'
}, },
{ {
'title': 'Navigation', 'title': 'Navigation',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/navigation' 'url' : '/components/navigation'
}, },
{ {
'title': 'Price Tables', 'title': 'Price Tables',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/price-tables' 'url' : '/components/price-tables'
}, },
{ {
'title': 'Search Bar', 'title': 'Search Bar',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/search-bar' 'url' : '/components/search-bar'
}, },
{ {
'title': 'Shortcuts', 'title': 'Shortcuts',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/shortcuts' 'url' : '/components/shortcuts'
}, },
{ {
'title': 'Widget', 'title': 'Widget',
'type' : 'nav-item', 'type' : 'item',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'url' : '/components/widget' 'url' : '/components/widget'
}
]
}, },
{ {
'title' : '3rd Party components', 'title' : '3rd Party components',
'type' : 'group',
'icon' : 'settings_input_component', 'icon' : 'settings_input_component',
'type' : 'nav-collapse',
'children': [ 'children': [
{ {
'title' : 'Datatables', 'title' : 'Datatables',
'type' : 'nav-collapse', 'type' : 'collapse',
'icon' : 'border_all', 'icon' : 'border_all',
'children': [ 'children': [
{ {
'title': 'ngx-datatable', 'title': 'ngx-datatable',
'type' : 'nav-item', 'type' : 'item',
'url' : '/components-third-party/datatables/ngx-datatable' 'url' : '/components-third-party/datatables/ngx-datatable'
} }
] ]
} }
] ]
} }
]
}
]; ];
} }
} }