diff --git a/src/app/@core/core.module.ts b/src/app/@core/core.module.ts new file mode 100644 index 00000000..9245df47 --- /dev/null +++ b/src/app/@core/core.module.ts @@ -0,0 +1,16 @@ +import { NgModule, Optional, SkipSelf } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { throwIfAlreadyLoaded } from './module-import-guard'; + +@NgModule({ + imports: [ + CommonModule + ], + declarations: [] +}) +export class CoreModule { + constructor(@Optional() @SkipSelf() parentModule: CoreModule) { + throwIfAlreadyLoaded(parentModule, 'CoreModule'); + } +} diff --git a/src/app/@core/module-import-guard.ts b/src/app/@core/module-import-guard.ts new file mode 100644 index 00000000..445640c4 --- /dev/null +++ b/src/app/@core/module-import-guard.ts @@ -0,0 +1,5 @@ +export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) { + if (parentModule) { + throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`); + } +} diff --git a/src/app/@theme/layouts/index.ts b/src/app/@theme/layouts/index.ts new file mode 100644 index 00000000..45e34433 --- /dev/null +++ b/src/app/@theme/layouts/index.ts @@ -0,0 +1 @@ +export * from './one-coll-layout/one-coll.layout'; diff --git a/src/app/@theme/layouts/one-coll-layout/one-coll.layout.ts b/src/app/@theme/layouts/one-coll-layout/one-coll.layout.ts new file mode 100644 index 00000000..5bfb78ce --- /dev/null +++ b/src/app/@theme/layouts/one-coll-layout/one-coll.layout.ts @@ -0,0 +1,18 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'one-coll-layout', + template: ` + + + + + + + + + `, +}) +export class RootLayoutComponent { + constructor() { } +} diff --git a/src/app/@theme/styles/default.theme.scss b/src/app/@theme/styles/default.theme.scss new file mode 100644 index 00000000..e1c28651 --- /dev/null +++ b/src/app/@theme/styles/default.theme.scss @@ -0,0 +1,3 @@ +@import '~@nga/theme/styles/themes/nga.theme.default'; + +@include nga-theme(); diff --git a/src/app/@theme/styles/styles.scss b/src/app/@theme/styles/styles.scss new file mode 100644 index 00000000..f925ec75 --- /dev/null +++ b/src/app/@theme/styles/styles.scss @@ -0,0 +1 @@ +@import "default.theme"; \ No newline at end of file diff --git a/src/app/@theme/theme.module.ts b/src/app/@theme/theme.module.ts new file mode 100644 index 00000000..f8dbc7ef --- /dev/null +++ b/src/app/@theme/theme.module.ts @@ -0,0 +1,50 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + +import { + NgaCardModule, + NgaLayoutModule, + NgaTabsetModule, + NgaRouteTabsetModule, + NgaSidebarModule, + NgaMenuModule +} from '@nga/theme'; + +import { RootLayoutComponent } from './layouts'; + +const BASE_MODULES = [ + CommonModule, + FormsModule, + ReactiveFormsModule +]; + +const NGA_MODULES = [ + NgaCardModule, + NgaLayoutModule, + NgaTabsetModule, + NgaRouteTabsetModule, + NgaSidebarModule, + NgaMenuModule +]; + +const LAYOUT_COMPONENTS = [ + RootLayoutComponent +]; + +@NgModule({ + imports: [ + ...BASE_MODULES, + ...NGA_MODULES, + ], + exports: [ + ...BASE_MODULES, + ...NGA_MODULES, + ...LAYOUT_COMPONENTS + ], + declarations: [ + ...LAYOUT_COMPONENTS + ] +}) +export class ThemeModule { +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 00000000..2c10f10e --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,20 @@ +import { ExtraOptions, RouterModule, Routes } from '@angular/router'; +import { NgModule } from '@angular/core'; + +const routes: Routes = [ + // {path: 'admin'} + {path: 'pages', loadChildren: 'app/pages/pages.module#PagesModule'}, + {path: '', redirectTo: 'pages', pathMatch: 'full'}, + {path: '**', redirectTo: 'pages'} +]; + +const config: ExtraOptions = { + useHash: true +}; + +@NgModule({ + imports: [RouterModule.forRoot(routes, config)], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/src/app/app.component.html b/src/app/app.component.html deleted file mode 100644 index 4e1e0514..00000000 --- a/src/app/app.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - - Header - - - Body - - - Footer - - diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 8b1c1622..970412c6 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,9 +1 @@ -/** - * @license - * Copyright Akveo. All Rights Reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - */ - -@import '~@nga/theme/styles/themes/nga.theme.default'; - -@include nga-theme(); +@import "@theme/styles/styles"; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index cc4d333a..afcc210a 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -6,10 +6,9 @@ import { Component } from '@angular/core'; @Component({ - selector: 'nga-app-root', - templateUrl: './app.component.html', + selector: 'app', + template: '', styleUrls: ['./app.component.scss'], }) export class AppComponent { - title = 'app works!'; } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 08b11ba5..209d286c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -5,37 +5,31 @@ */ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; + import { - NgaThemeModule, - NgaCardModule, - NgaLayoutModule, NgaMenuModule, - NgaRouteTabsetModule, NgaSidebarModule, - NgaTabsetModule, + NgaThemeModule } from '@nga/theme'; import { AppComponent } from './app.component'; +import { CoreModule } from './@core/core.module'; +import { PagesModule } from './pages/pages.module'; +import { AppRoutingModule } from './app-routing.module'; @NgModule({ - declarations: [ - AppComponent, - ], + declarations: [AppComponent], imports: [ BrowserModule, - FormsModule, HttpModule, - NgaThemeModule, - NgaCardModule, - NgaLayoutModule, - NgaMenuModule, - NgaRouteTabsetModule, - NgaSidebarModule, - NgaTabsetModule, + NgaThemeModule.forRoot(), + NgaSidebarModule.forRoot(), + AppRoutingModule, + CoreModule, + PagesModule ], - providers: [], bootstrap: [AppComponent], }) -export class AppModule { } +export class AppModule { +} diff --git a/src/app/pages/dashboard/dashboard.component.html b/src/app/pages/dashboard/dashboard.component.html new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/dashboard/dashboard.component.scss b/src/app/pages/dashboard/dashboard.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts new file mode 100644 index 00000000..b2177493 --- /dev/null +++ b/src/app/pages/dashboard/dashboard.component.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrls: ['./dashboard.component.scss'] +}) +export class DashboardComponent { +} diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts new file mode 100644 index 00000000..ab4405f8 --- /dev/null +++ b/src/app/pages/pages-routing.module.ts @@ -0,0 +1,23 @@ +import { RouterModule, Routes } from '@angular/router'; +import { NgModule } from '@angular/core'; + +import { PagesComponent } from './pages.component'; +import { DashboardComponent } from './dashboard/dashboard.component'; + +const routes: Routes = [ + { + path: '', + component: PagesComponent, + children: [ + {path: '', redirectTo: 'dashboard', pathMatch: 'full'}, + {path: 'dashboard', component: DashboardComponent} + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class PagesRoutingModule { +} diff --git a/src/app/pages/pages.component.ts b/src/app/pages/pages.component.ts new file mode 100644 index 00000000..31b56aa8 --- /dev/null +++ b/src/app/pages/pages.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'pages', + template: ` + + + + ` +}) +export class PagesComponent { +} diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts new file mode 100644 index 00000000..5a4742ba --- /dev/null +++ b/src/app/pages/pages.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; + +import { PagesComponent } from './pages.component'; +import { DashboardComponent } from './dashboard/dashboard.component'; +import { PagesRoutingModule } from './pages-routing.module'; +import { ThemeModule } from '../@theme/theme.module'; + +@NgModule({ + imports: [ + PagesRoutingModule, + ThemeModule + ], + declarations: [ + PagesComponent, + DashboardComponent + ] +}) +export class PagesModule { +} diff --git a/src/index.html b/src/index.html index f4dd4981..0c0033c7 100644 --- a/src/index.html +++ b/src/index.html @@ -2,13 +2,13 @@ - @nga/framework + NgX Admin Demo - Loading... + Loading...