mirror of
https://github.com/richard-loafle/fuse-angular.git
synced 2025-01-10 12:35:07 +00:00
Moved the navigation.model.ts into its own folder
+ Added support for translations in nav items + Added badge support for collapsable nav items + Initialize the navigation from app.component rather then navigation.service
This commit is contained in:
parent
db7a00440c
commit
2a10f3e443
|
@ -1,6 +1,12 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { FuseTranslationLoaderService } from './core/services/translation-loader.service';
|
||||||
|
|
||||||
|
import { FuseNavigationService } from './core/components/navigation/navigation.service';
|
||||||
|
import { FuseNavigationModel } from './navigation/navigation.model';
|
||||||
|
import { locale as navigationEnglish } from './navigation/i18n/en';
|
||||||
|
import { locale as navigationTurkish } from './navigation/i18n/tr';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-root',
|
selector : 'fuse-root',
|
||||||
|
@ -10,8 +16,10 @@ import { TranslateService } from '@ngx-translate/core';
|
||||||
export class AppComponent
|
export class AppComponent
|
||||||
{
|
{
|
||||||
constructor(
|
constructor(
|
||||||
|
private fuseNavigationService: FuseNavigationService,
|
||||||
private fuseSplashScreen: FuseSplashScreenService,
|
private fuseSplashScreen: FuseSplashScreenService,
|
||||||
private translate: TranslateService
|
private translate: TranslateService,
|
||||||
|
private translationLoader: FuseTranslationLoaderService
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Add languages
|
// Add languages
|
||||||
|
@ -22,5 +30,11 @@ export class AppComponent
|
||||||
|
|
||||||
// Use a language
|
// Use a language
|
||||||
this.translate.use('en');
|
this.translate.use('en');
|
||||||
|
|
||||||
|
// Set the navigation model
|
||||||
|
this.fuseNavigationService.setNavigationModel(new FuseNavigationModel());
|
||||||
|
|
||||||
|
// Set the navigation translations
|
||||||
|
this.translationLoader.loadTranslations(navigationEnglish, navigationTurkish);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,16 +73,12 @@ const appRoutes: Routes = [
|
||||||
SharedModule,
|
SharedModule,
|
||||||
MarkdownModule.forRoot(),
|
MarkdownModule.forRoot(),
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
|
|
||||||
InMemoryWebApiModule.forRoot(FuseFakeDbService, {
|
InMemoryWebApiModule.forRoot(FuseFakeDbService, {
|
||||||
delay : 0,
|
delay : 0,
|
||||||
passThruUnknownUrl: true
|
passThruUnknownUrl: true
|
||||||
}),
|
}),
|
||||||
|
|
||||||
FuseMainModule,
|
FuseMainModule,
|
||||||
|
|
||||||
ProjectModule,
|
ProjectModule,
|
||||||
|
|
||||||
PagesModule,
|
PagesModule,
|
||||||
UIModule,
|
UIModule,
|
||||||
ServicesModule,
|
ServicesModule,
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<a class="nav-link" matRipple>
|
<a class="nav-link" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
@ -10,8 +10,8 @@
|
||||||
|
|
||||||
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
|
5
src/app/core/components/navigation/navigation.model.ts
Normal file
5
src/app/core/components/navigation/navigation.model.ts
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
export interface FuseNavigationModelInterface
|
||||||
|
{
|
||||||
|
model: any[];
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { EventEmitter, Injectable } from '@angular/core';
|
import { EventEmitter, Injectable } from '@angular/core';
|
||||||
import { NavigationModel } from '../../../navigation.model';
|
|
||||||
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||||
|
import { FuseNavigationModelInterface } from './navigation.model';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FuseNavigationService
|
export class FuseNavigationService
|
||||||
|
@ -8,13 +8,11 @@ export class FuseNavigationService
|
||||||
onNavCollapseToggle = new EventEmitter<any>();
|
onNavCollapseToggle = new EventEmitter<any>();
|
||||||
onNavCollapseToggled = new EventEmitter<any>();
|
onNavCollapseToggled = new EventEmitter<any>();
|
||||||
onNavigationModelChange: BehaviorSubject<any> = new BehaviorSubject({});
|
onNavigationModelChange: BehaviorSubject<any> = new BehaviorSubject({});
|
||||||
navigationModel: NavigationModel;
|
navigationModel: FuseNavigationModelInterface;
|
||||||
flatNavigation: any[] = [];
|
flatNavigation: any[] = [];
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
{
|
{
|
||||||
this.navigationModel = new NavigationModel();
|
|
||||||
this.onNavigationModelChange.next(this.navigationModel.model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
<a class="nav-link" matRipple (click)="toggleOpen($event)">
|
<a class="nav-link" matRipple (click)="toggleOpen($event)">
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
</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=='item'" [item]="item"></fuse-nav-vertical-item>
|
<fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<div class="group-title">
|
<div class="group-title">
|
||||||
<span class="hint-text">{{ item.title }}</span>
|
<span class="hint-text" [translate]="item.translate">{{ item.title }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="group-items">
|
<div class="group-items">
|
||||||
<ng-container *ngFor="let item of item.children">
|
<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-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
@ -10,8 +10,8 @@
|
||||||
|
|
||||||
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -47,14 +47,20 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link-badge {
|
.nav-link-badge {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
min-width: 20px;
|
min-width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
|
||||||
padding: 0 7px;
|
padding: 0 7px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
transition: opacity 0.2s ease-in-out 0.1s;
|
transition: opacity 0.2s ease-in-out 0.1s;
|
||||||
|
margin-left: 8px;
|
||||||
|
|
||||||
|
+ .collapse-arrow {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<code>fuse-navigation</code> is a custom built Fuse component allows you to create a multi-level collapsable
|
<code>fuse-navigation</code> is a custom built Fuse component allows you to create a multi-level collapsable
|
||||||
navigation.
|
navigation. It has built-in support for translations using <b>ngx-translate</b> module.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="my-48">
|
<div class="my-48">
|
||||||
|
@ -40,6 +40,11 @@
|
||||||
<b>Collapsable</b> and <b>Item</b>. These items can be mixed and matched to create unique and complex
|
<b>Collapsable</b> and <b>Item</b>. These items can be mixed and matched to create unique and complex
|
||||||
navigation layouts.
|
navigation layouts.
|
||||||
</p>
|
</p>
|
||||||
|
<p class="py-8">
|
||||||
|
Navigation model can be found in <code>src/app/navigation</code> folder along with its translation
|
||||||
|
files. Navigation model and its translation files are set in <b>app.component.ts</b> file. Check that
|
||||||
|
file for more detailed usage example.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="my-48">
|
<div class="my-48">
|
||||||
|
@ -48,9 +53,10 @@
|
||||||
<fuse-hljs lang="json" class="source-code">
|
<fuse-hljs lang="json" class="source-code">
|
||||||
<textarea #source hidden="hidden">
|
<textarea #source hidden="hidden">
|
||||||
{
|
{
|
||||||
'title': 'COMPONENTS',
|
'title' : 'COMPONENTS',
|
||||||
|
'translate': 'NAV.COMPONENTS',
|
||||||
'type' : 'group',
|
'type' : 'group',
|
||||||
'children': [
|
'children' : [
|
||||||
{
|
{
|
||||||
'title': 'ngx-datatable',
|
'title': 'ngx-datatable',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
|
@ -70,9 +76,10 @@
|
||||||
<textarea #source hidden="hidden">
|
<textarea #source hidden="hidden">
|
||||||
{
|
{
|
||||||
'title' : 'Datatables',
|
'title' : 'Datatables',
|
||||||
|
'translate': 'NAV.DATATABLES',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
'icon' : 'border_all',
|
'icon' : 'border_all',
|
||||||
'children': [
|
'children' : [
|
||||||
{
|
{
|
||||||
'title': 'ngx-datatable',
|
'title': 'ngx-datatable',
|
||||||
'type' : 'nav-item',
|
'type' : 'nav-item',
|
||||||
|
@ -91,7 +98,8 @@
|
||||||
<fuse-hljs lang="json" class="source-code">
|
<fuse-hljs lang="json" class="source-code">
|
||||||
<textarea #source hidden="hidden">
|
<textarea #source hidden="hidden">
|
||||||
{
|
{
|
||||||
'title': 'Countdown',
|
'title' : 'Countdown',
|
||||||
|
'translate': 'NAV.COUNTDOWN',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'settings_input_component',
|
'icon' : 'settings_input_component',
|
||||||
'url' : '/components/countdown'
|
'url' : '/components/countdown'
|
||||||
|
|
20
src/app/navigation/i18n/en.ts
Normal file
20
src/app/navigation/i18n/en.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
export const locale = {
|
||||||
|
lang: 'en',
|
||||||
|
data: {
|
||||||
|
'NAV': {
|
||||||
|
'APPLICATIONS': 'Applications',
|
||||||
|
'DASHBOARDS' : 'Dashboards',
|
||||||
|
'CALENDAR' : 'Calendar',
|
||||||
|
'ECOMMERCE' : 'E-Commerce',
|
||||||
|
'MAIL' : {
|
||||||
|
'TITLE': 'Mail',
|
||||||
|
'BADGE': '25'
|
||||||
|
},
|
||||||
|
'CHAT' : 'Chat',
|
||||||
|
'FILE_MANAGER': 'File Manager',
|
||||||
|
'CONTACTS' : 'Contacts',
|
||||||
|
'TODO' : 'To-Do',
|
||||||
|
'SCRUMBOARD' : 'Scrumboard'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
20
src/app/navigation/i18n/tr.ts
Normal file
20
src/app/navigation/i18n/tr.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
export const locale = {
|
||||||
|
lang: 'tr',
|
||||||
|
data: {
|
||||||
|
'NAV': {
|
||||||
|
'APPLICATIONS': 'Programlar',
|
||||||
|
'DASHBOARDS' : 'Kontrol Paneli',
|
||||||
|
'CALENDAR' : 'Takvim',
|
||||||
|
'ECOMMERCE' : 'E-Ticaret',
|
||||||
|
'MAIL' : {
|
||||||
|
'TITLE': 'Posta',
|
||||||
|
'BADGE': '15'
|
||||||
|
},
|
||||||
|
'CHAT' : 'Sohbet',
|
||||||
|
'FILE_MANAGER': 'Dosya Yöneticisi',
|
||||||
|
'CONTACTS' : 'Kişiler',
|
||||||
|
'TODO' : 'Yapılacaklar',
|
||||||
|
'SCRUMBOARD' : 'Proje'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -1,4 +1,6 @@
|
||||||
export class NavigationModel
|
import { FuseNavigationModelInterface } from '../core/components/navigation/navigation.model';
|
||||||
|
|
||||||
|
export class FuseNavigationModel implements FuseNavigationModelInterface
|
||||||
{
|
{
|
||||||
public model: any[];
|
public model: any[];
|
||||||
|
|
||||||
|
@ -8,15 +10,17 @@ export class NavigationModel
|
||||||
{
|
{
|
||||||
'id' : 'applications',
|
'id' : 'applications',
|
||||||
'title' : 'Applications',
|
'title' : 'Applications',
|
||||||
|
'translate': 'NAV.APPLICATIONS',
|
||||||
'type' : 'group',
|
'type' : 'group',
|
||||||
'icon' : 'apps',
|
'icon' : 'apps',
|
||||||
'children': [
|
'children' : [
|
||||||
{
|
{
|
||||||
'id' : 'dashboards',
|
'id' : 'dashboards',
|
||||||
'title' : 'Dashboards',
|
'title' : 'Dashboards',
|
||||||
|
'translate': 'NAV.DASHBOARDS',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
'icon' : 'dashboard',
|
'icon' : 'dashboard',
|
||||||
'children': [
|
'children' : [
|
||||||
{
|
{
|
||||||
'id' : 'project',
|
'id' : 'project',
|
||||||
'title': 'Project',
|
'title': 'Project',
|
||||||
|
@ -27,7 +31,8 @@ export class NavigationModel
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'calendar',
|
'id' : 'calendar',
|
||||||
'title': 'Calendar',
|
'title' : 'Calendar',
|
||||||
|
'translate': 'NAV.CALENDAR',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'today',
|
'icon' : 'today',
|
||||||
'url' : '/apps/calendar'
|
'url' : '/apps/calendar'
|
||||||
|
@ -35,9 +40,10 @@ export class NavigationModel
|
||||||
{
|
{
|
||||||
'id' : 'e-commerce',
|
'id' : 'e-commerce',
|
||||||
'title' : 'E-Commerce',
|
'title' : 'E-Commerce',
|
||||||
|
'translate': 'NAV.ECOMMERCE',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
'icon' : 'shopping_cart',
|
'icon' : 'shopping_cart',
|
||||||
'children': [
|
'children' : [
|
||||||
{
|
{
|
||||||
'id' : 'dashboard',
|
'id' : 'dashboard',
|
||||||
'title': 'Dashboard',
|
'title': 'Dashboard',
|
||||||
|
@ -76,23 +82,26 @@ export class NavigationModel
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'mail',
|
'id' : 'mail',
|
||||||
'title': 'Mail',
|
'title' : 'Mail',
|
||||||
|
'translate': 'NAV.MAIL.TITLE',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'email',
|
'icon' : 'email',
|
||||||
'url' : '/apps/mail',
|
'url' : '/apps/mail',
|
||||||
'badge': {
|
'badge' : {
|
||||||
'title': 25,
|
'title' : 25,
|
||||||
|
'translate': 'NAV.MAIL.BADGE',
|
||||||
'bg' : '#F44336',
|
'bg' : '#F44336',
|
||||||
'fg' : '#FFFFFF'
|
'fg' : '#FFFFFF'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'chat',
|
'id' : 'chat',
|
||||||
'title': 'Chat',
|
'title' : 'Chat',
|
||||||
|
'translate': 'NAV.CHAT',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'chat',
|
'icon' : 'chat',
|
||||||
'url' : '/apps/chat',
|
'url' : '/apps/chat',
|
||||||
'badge': {
|
'badge' : {
|
||||||
'title': 13,
|
'title': 13,
|
||||||
'bg' : '#09d261',
|
'bg' : '#09d261',
|
||||||
'fg' : '#FFFFFF'
|
'fg' : '#FFFFFF'
|
||||||
|
@ -100,25 +109,28 @@ export class NavigationModel
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'file-manager',
|
'id' : 'file-manager',
|
||||||
'title': 'File Manager',
|
'title' : 'File Manager',
|
||||||
|
'translate': 'NAV.FILE_MANAGER',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'folder',
|
'icon' : 'folder',
|
||||||
'url' : '/apps/file-manager'
|
'url' : '/apps/file-manager'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'contacts',
|
'id' : 'contacts',
|
||||||
'title': 'Contacts',
|
'title' : 'Contacts',
|
||||||
|
'translate': 'NAV.CONTACTS',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'account_box',
|
'icon' : 'account_box',
|
||||||
'url' : '/apps/contacts'
|
'url' : '/apps/contacts'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'to-do',
|
'id' : 'to-do',
|
||||||
'title': 'To-Do',
|
'title' : 'To-Do',
|
||||||
|
'translate': 'NAV.TODO',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'check_box',
|
'icon' : 'check_box',
|
||||||
'url' : '/apps/todo',
|
'url' : '/apps/todo',
|
||||||
'badge': {
|
'badge' : {
|
||||||
'title': 3,
|
'title': 3,
|
||||||
'bg' : '#FF6F00',
|
'bg' : '#FF6F00',
|
||||||
'fg' : '#FFFFFF'
|
'fg' : '#FFFFFF'
|
||||||
|
@ -126,7 +138,8 @@ export class NavigationModel
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'id' : 'scrumboard',
|
'id' : 'scrumboard',
|
||||||
'title': 'Scrumboard',
|
'title' : 'Scrumboard',
|
||||||
|
'translate': 'NAV.SCRUMBOARD',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'assessment',
|
'icon' : 'assessment',
|
||||||
'url' : '/apps/scrumboard'
|
'url' : '/apps/scrumboard'
|
||||||
|
@ -144,6 +157,11 @@ export class NavigationModel
|
||||||
'title' : 'Authentication',
|
'title' : 'Authentication',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
'icon' : 'lock',
|
'icon' : 'lock',
|
||||||
|
'badge' : {
|
||||||
|
'title': 10,
|
||||||
|
'bg' : '#525e8a',
|
||||||
|
'fg' : '#FFFFFF'
|
||||||
|
},
|
||||||
'children': [
|
'children': [
|
||||||
{
|
{
|
||||||
'id' : 'login',
|
'id' : 'login',
|
||||||
|
@ -359,6 +377,11 @@ export class NavigationModel
|
||||||
'id' : 'carded',
|
'id' : 'carded',
|
||||||
'title' : 'Carded',
|
'title' : 'Carded',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
|
'badge' : {
|
||||||
|
'title': 10,
|
||||||
|
'bg' : '#525e8a',
|
||||||
|
'fg' : '#FFFFFF'
|
||||||
|
},
|
||||||
'children': [
|
'children': [
|
||||||
{
|
{
|
||||||
'id' : 'full-width',
|
'id' : 'full-width',
|
||||||
|
@ -426,6 +449,11 @@ export class NavigationModel
|
||||||
'id' : 'simple',
|
'id' : 'simple',
|
||||||
'title' : 'Simple',
|
'title' : 'Simple',
|
||||||
'type' : 'collapse',
|
'type' : 'collapse',
|
||||||
|
'badge' : {
|
||||||
|
'title': 8,
|
||||||
|
'bg' : '#525e8a',
|
||||||
|
'fg' : '#FFFFFF'
|
||||||
|
},
|
||||||
'children': [
|
'children': [
|
||||||
{
|
{
|
||||||
'id' : 'full-width',
|
'id' : 'full-width',
|
Loading…
Reference in New Issue
Block a user