mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-17 07:50:12 +01:00
refactor(app): refactor forRoot & menu import
This commit is contained in:
parent
d6cef06dcd
commit
be69ccc058
6 changed files with 170 additions and 111 deletions
|
|
@ -1,7 +1,12 @@
|
||||||
import { NgModule, Optional, SkipSelf } from '@angular/core';
|
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
|
|
||||||
import { throwIfAlreadyLoaded } from './module-import-guard';
|
import { throwIfAlreadyLoaded } from './module-import-guard';
|
||||||
|
import { DataModule } from './data/data.module';
|
||||||
|
|
||||||
|
const NGA_CORE_PROVIDERS = [
|
||||||
|
...DataModule.forRoot().providers,
|
||||||
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
|
@ -13,4 +18,13 @@ export class CoreModule {
|
||||||
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
|
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
|
||||||
throwIfAlreadyLoaded(parentModule, 'CoreModule');
|
throwIfAlreadyLoaded(parentModule, 'CoreModule');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static forRoot(): ModuleWithProviders {
|
||||||
|
return <ModuleWithProviders>{
|
||||||
|
ngModule: CoreModule,
|
||||||
|
providers: [
|
||||||
|
...NGA_CORE_PROVIDERS,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { ModuleWithProviders, NgModule } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
NgaThemeModule,
|
||||||
NgaCardModule,
|
NgaCardModule,
|
||||||
NgaLayoutModule,
|
NgaLayoutModule,
|
||||||
NgaTabsetModule,
|
NgaTabsetModule,
|
||||||
|
|
@ -45,6 +46,7 @@ const NGA_MODULES = [
|
||||||
NgaUserModule,
|
NgaUserModule,
|
||||||
NgaActionsModule,
|
NgaActionsModule,
|
||||||
NgaSearchModule,
|
NgaSearchModule,
|
||||||
|
NgaSidebarModule,
|
||||||
];
|
];
|
||||||
|
|
||||||
const COMPONENTS = [
|
const COMPONENTS = [
|
||||||
|
|
@ -61,11 +63,17 @@ const PIPES = [
|
||||||
RoundPipe,
|
RoundPipe,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const NGA_THEME_PROVIDERS = [
|
||||||
|
...NgaThemeModule.forRoot({ name: 'cosmic' }).providers,
|
||||||
|
...NgaSidebarModule.forRoot().providers,
|
||||||
|
...NgaSidebarModule.forRoot().providers,
|
||||||
|
...NgaMenuModule.forRoot().providers,
|
||||||
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
...BASE_MODULES,
|
...BASE_MODULES,
|
||||||
...NGA_MODULES,
|
...NGA_MODULES,
|
||||||
NgaSidebarModule.forRoot(),
|
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
...BASE_MODULES,
|
...BASE_MODULES,
|
||||||
|
|
@ -79,4 +87,13 @@ const PIPES = [
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class ThemeModule {
|
export class ThemeModule {
|
||||||
|
|
||||||
|
static forRoot(): ModuleWithProviders {
|
||||||
|
return <ModuleWithProviders>{
|
||||||
|
ngModule: ThemeModule,
|
||||||
|
providers: [
|
||||||
|
...NGA_THEME_PROVIDERS,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import { CoreModule } from './@core/core.module';
|
||||||
|
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { AppRoutingModule } from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
|
import { ThemeModule } from './@theme/theme.module';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [AppComponent],
|
declarations: [AppComponent],
|
||||||
|
|
@ -22,6 +23,8 @@ import { AppRoutingModule } from './app-routing.module';
|
||||||
HttpModule,
|
HttpModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
CoreModule,
|
CoreModule,
|
||||||
|
ThemeModule.forRoot(),
|
||||||
|
CoreModule.forRoot(),
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent],
|
bootstrap: [AppComponent],
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
||||||
|
|
@ -2,102 +2,134 @@ import { NgaMenuItem } from '@akveo/nga-theme';
|
||||||
|
|
||||||
import { List } from 'immutable';
|
import { List } from 'immutable';
|
||||||
|
|
||||||
// TODO: refactor array styles
|
export const MENU_ITEMS: List<NgaMenuItem> = List([
|
||||||
export const menuItems: List<NgaMenuItem> = List([{
|
{
|
||||||
title: 'Dashboard',
|
title: 'Dashboard',
|
||||||
icon: 'ion ion-ios-home-outline',
|
icon: 'ion ion-ios-home-outline',
|
||||||
link: '/pages/dashboard',
|
link: '/pages/dashboard',
|
||||||
home: true,
|
home: true,
|
||||||
}, {
|
|
||||||
title: 'FEATURES',
|
|
||||||
group: true,
|
|
||||||
}, {
|
|
||||||
title: 'UI Features',
|
|
||||||
icon: 'ion ion-ios-keypad-outline',
|
|
||||||
link: '/pages/ui-features',
|
|
||||||
children: List<NgaMenuItem>([{
|
|
||||||
title: 'Buttons',
|
|
||||||
link: '/pages/ui-features/buttons',
|
|
||||||
}, {
|
|
||||||
title: 'Grid',
|
|
||||||
link: '/pages/ui-features/grid',
|
|
||||||
}, {
|
|
||||||
title: 'Icons',
|
|
||||||
link: '/pages/ui-features/icons',
|
|
||||||
}, {
|
|
||||||
title: 'Modals',
|
|
||||||
link: '/pages/ui-features/modals',
|
|
||||||
}, {
|
|
||||||
title: 'Typography',
|
|
||||||
link: '/pages/ui-features/typography',
|
|
||||||
}, {
|
|
||||||
title: 'Animated Searches',
|
|
||||||
link: '/pages/ui-features/search-fields',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Tabs',
|
title: 'FEATURES',
|
||||||
link: '/pages/ui-features/tabs',
|
group: true,
|
||||||
}]),
|
},
|
||||||
}, {
|
{
|
||||||
title: 'Components',
|
title: 'UI Features',
|
||||||
icon: 'ion ion-ios-gear-outline',
|
icon: 'ion ion-ios-keypad-outline',
|
||||||
children: List<NgaMenuItem>([
|
link: '/pages/ui-features',
|
||||||
{
|
children: List<NgaMenuItem>([
|
||||||
title: 'Tree',
|
{
|
||||||
link: '/pages/components/tree',
|
title: 'Buttons',
|
||||||
}, {
|
link: '/pages/ui-features/buttons',
|
||||||
title: 'Toaster',
|
},
|
||||||
link: '/pages/components/toaster',
|
{
|
||||||
},
|
title: 'Grid',
|
||||||
]),
|
link: '/pages/ui-features/grid',
|
||||||
}, {
|
},
|
||||||
title: 'Maps',
|
{
|
||||||
icon: 'ion ion-ios-location-outline',
|
title: 'Icons',
|
||||||
children: List<NgaMenuItem>([{
|
link: '/pages/ui-features/icons',
|
||||||
title: 'Gmaps',
|
},
|
||||||
link: '/pages/maps/gmaps',
|
{
|
||||||
}, {
|
title: 'Modals',
|
||||||
title: 'Leaflet',
|
link: '/pages/ui-features/modals',
|
||||||
link: '/pages/maps/leaflet',
|
},
|
||||||
}]),
|
{
|
||||||
}, {
|
title: 'Typography',
|
||||||
title: 'Charts',
|
link: '/pages/ui-features/typography',
|
||||||
icon: 'ion ion-arrow-graph-up-right',
|
},
|
||||||
children: List<NgaMenuItem>([{
|
{
|
||||||
title: 'Echarts',
|
title: 'Animated Searches',
|
||||||
link: '/pages/charts/echarts',
|
link: '/pages/ui-features/search-fields',
|
||||||
}, {
|
},
|
||||||
title: 'D3',
|
{
|
||||||
link: '/pages/charts/d3',
|
title: 'Tabs',
|
||||||
}, {
|
link: '/pages/ui-features/tabs',
|
||||||
title: 'Charts.js',
|
},
|
||||||
link: '/pages/charts/chartjs',
|
]),
|
||||||
}]),
|
},
|
||||||
}, {
|
{
|
||||||
title: 'Editors',
|
title: 'Components',
|
||||||
icon: 'ion ion-edit',
|
icon: 'ion ion-ios-gear-outline',
|
||||||
children: List<NgaMenuItem>([{
|
children: List<NgaMenuItem>([
|
||||||
title: 'TinyMCE',
|
{
|
||||||
link: '/pages/editors/tinymce',
|
title: 'Tree',
|
||||||
}, {
|
link: '/pages/components/tree',
|
||||||
title: 'CKEditor',
|
}, {
|
||||||
link: '/pages/editors/ckeditor',
|
title: 'Toaster',
|
||||||
}]),
|
link: '/pages/components/toaster',
|
||||||
}, {
|
},
|
||||||
title: 'Forms',
|
]),
|
||||||
icon: 'ion-compose',
|
},
|
||||||
children: List<NgaMenuItem>([{
|
{
|
||||||
title: 'Form Inputs',
|
title: 'Maps',
|
||||||
link: '/pages/forms/inputs',
|
icon: 'ion ion-ios-location-outline',
|
||||||
}, {
|
children: List<NgaMenuItem>([
|
||||||
title: 'Form Layouts',
|
{
|
||||||
link: '/pages/forms/layouts',
|
title: 'Gmaps',
|
||||||
}]),
|
link: '/pages/maps/gmaps',
|
||||||
}, {
|
},
|
||||||
title: 'Tables',
|
{
|
||||||
icon: 'ion-ios-grid-view',
|
title: 'Leaflet',
|
||||||
children: List<NgaMenuItem>([{
|
link: '/pages/maps/leaflet',
|
||||||
title: 'Smart Table',
|
},
|
||||||
link: '/pages/tables/smart-table',
|
]),
|
||||||
}]),
|
},
|
||||||
}]);
|
{
|
||||||
|
title: 'Charts',
|
||||||
|
icon: 'ion ion-arrow-graph-up-right',
|
||||||
|
children: List<NgaMenuItem>([
|
||||||
|
{
|
||||||
|
title: 'Echarts',
|
||||||
|
link: '/pages/charts/echarts',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'D3',
|
||||||
|
link: '/pages/charts/d3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Charts.js',
|
||||||
|
link: '/pages/charts/chartjs',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Editors',
|
||||||
|
icon: 'ion ion-edit',
|
||||||
|
children: List<NgaMenuItem>([
|
||||||
|
{
|
||||||
|
title: 'TinyMCE',
|
||||||
|
link: '/pages/editors/tinymce',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CKEditor',
|
||||||
|
link: '/pages/editors/ckeditor',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Forms',
|
||||||
|
icon: 'ion-compose',
|
||||||
|
children: List<NgaMenuItem>([
|
||||||
|
{
|
||||||
|
title: 'Form Inputs',
|
||||||
|
link: '/pages/forms/inputs',
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
title: 'Form Layouts',
|
||||||
|
link: '/pages/forms/layouts',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Tables',
|
||||||
|
icon: 'ion-ios-grid-view',
|
||||||
|
children: List<NgaMenuItem>([
|
||||||
|
{
|
||||||
|
title: 'Smart Table',
|
||||||
|
link: '/pages/tables/smart-table',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,18 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
import 'style-loader!../@theme/styles/styles.scss';
|
import 'style-loader!../@theme/styles/styles.scss';
|
||||||
|
import { MENU_ITEMS } from './pages-menu';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ngx-pages',
|
selector: 'ngx-pages',
|
||||||
template: `
|
template: `
|
||||||
<ngx-one-column-layout>
|
<ngx-one-column-layout>
|
||||||
<nga-menu></nga-menu>
|
<nga-menu [items]="menu"></nga-menu>
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
</ngx-one-column-layout>
|
</ngx-one-column-layout>
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
export class PagesComponent {
|
export class PagesComponent {
|
||||||
|
|
||||||
|
menu = MENU_ITEMS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,9 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { NgaMenuModule, NgaSidebarModule, NgaThemeModule } from '@akveo/nga-theme';
|
|
||||||
|
|
||||||
import { menuItems } from './pages-menu';
|
|
||||||
|
|
||||||
import { PagesComponent } from './pages.component';
|
import { PagesComponent } from './pages.component';
|
||||||
import { DashboardModule } from './dashboard/dashboard.module';
|
import { DashboardModule } from './dashboard/dashboard.module';
|
||||||
import { PagesRoutingModule } from './pages-routing.module';
|
import { PagesRoutingModule } from './pages-routing.module';
|
||||||
import { ThemeModule } from '../@theme/theme.module';
|
import { ThemeModule } from '../@theme/theme.module';
|
||||||
import { DataModule } from '../@core/data/data.module';
|
|
||||||
|
|
||||||
const PAGES_COMPONENTS = [
|
const PAGES_COMPONENTS = [
|
||||||
PagesComponent,
|
PagesComponent,
|
||||||
|
|
@ -16,13 +11,8 @@ const PAGES_COMPONENTS = [
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
// TODO: why here? review the modules structure
|
|
||||||
NgaThemeModule.forRoot({ name: 'cosmic' }),
|
|
||||||
NgaSidebarModule.forRoot(),
|
|
||||||
NgaMenuModule.forRoot({ items: menuItems }),
|
|
||||||
PagesRoutingModule,
|
PagesRoutingModule,
|
||||||
ThemeModule,
|
ThemeModule,
|
||||||
DataModule.forRoot(),
|
|
||||||
DashboardModule,
|
DashboardModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue