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...