├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── angular.json
├── e2e
├── protractor.conf.js
├── src
│ ├── app.e2e-spec.ts
│ └── app.po.ts
└── tsconfig.e2e.json
├── package-lock.json
├── package.json
├── src
├── app
│ ├── app-routing.module.ts
│ ├── app.component.html
│ ├── app.component.scss
│ ├── app.component.spec.ts
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── components
│ │ ├── footer
│ │ │ ├── footer.component.html
│ │ │ ├── footer.component.scss
│ │ │ ├── footer.component.spec.ts
│ │ │ └── footer.component.ts
│ │ ├── navbar
│ │ │ ├── navbar.component.html
│ │ │ ├── navbar.component.scss
│ │ │ ├── navbar.component.spec.ts
│ │ │ └── navbar.component.ts
│ │ └── sidebar
│ │ │ ├── sidebar.component.html
│ │ │ ├── sidebar.component.scss
│ │ │ ├── sidebar.component.spec.ts
│ │ │ └── sidebar.component.ts
│ ├── pages
│ │ ├── dashboard
│ │ │ ├── dashboard.component.html
│ │ │ ├── dashboard.component.scss
│ │ │ ├── dashboard.component.spec.ts
│ │ │ └── dashboard.component.ts
│ │ ├── forms
│ │ │ ├── forms.component.html
│ │ │ ├── forms.component.scss
│ │ │ ├── forms.component.spec.ts
│ │ │ └── forms.component.ts
│ │ ├── maps
│ │ │ ├── maps.component.html
│ │ │ ├── maps.component.scss
│ │ │ ├── maps.component.spec.ts
│ │ │ └── maps.component.ts
│ │ ├── notifications
│ │ │ ├── notifications.component.html
│ │ │ ├── notifications.component.scss
│ │ │ ├── notifications.component.spec.ts
│ │ │ └── notifications.component.ts
│ │ ├── tables
│ │ │ ├── tables.component.html
│ │ │ ├── tables.component.scss
│ │ │ ├── tables.component.spec.ts
│ │ │ └── tables.component.ts
│ │ └── typography
│ │ │ ├── typography.component.html
│ │ │ ├── typography.component.scss
│ │ │ ├── typography.component.spec.ts
│ │ │ └── typography.component.ts
│ └── services
│ │ ├── app.service.spec.ts
│ │ └── app.service.ts
├── assets
│ ├── .gitkeep
│ ├── img
│ │ ├── logo.png
│ │ └── user.jpg
│ ├── lightning-admin.scss
│ └── partials
│ │ ├── _dashboard.scss
│ │ ├── _navbar.scss
│ │ ├── _sidebar.scss
│ │ ├── _themes.scss
│ │ └── _variables.scss
├── browserslist
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── karma.conf.js
├── main.ts
├── polyfills.ts
├── styles.scss
├── test.ts
├── tsconfig.app.json
├── tsconfig.spec.json
└── tslint.json
├── tsconfig.json
└── tslint.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # profiling files
12 | chrome-profiler-events.json
13 | speed-measure-plugin.json
14 |
15 | # IDEs and editors
16 | /.idea
17 | .project
18 | .classpath
19 | .c9/
20 | *.launch
21 | .settings/
22 | *.sublime-workspace
23 |
24 | # IDE - VSCode
25 | .vscode/*
26 | !.vscode/settings.json
27 | !.vscode/tasks.json
28 | !.vscode/launch.json
29 | !.vscode/extensions.json
30 |
31 | # misc
32 | /.sass-cache
33 | /connect.lock
34 | /coverage
35 | /libpeerconnection.log
36 | npm-debug.log
37 | yarn-error.log
38 | testem.log
39 | /typings
40 |
41 | # System Files
42 | .DS_Store
43 | Thumbs.db
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2020-present Mohamed Azouaoui
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Lightning Admin Angular
2 |
3 | A mobile first design of a responsive admin template built with angular and bootstrap
4 |
5 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.1.2.
6 |
7 | ## Demo
8 | [Live preview](https://azouaoui-med.github.io/lightning-admin-angular/demo/)
9 |
10 | ## Screenshot
11 |
12 | 
13 |
14 | ## Quick start
15 |
16 | ```
17 | npm install
18 |
19 | ng serve
20 | ```
21 |
22 | Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
23 |
24 | ## Author
25 | Mohamed Azouaoui
26 |
27 | ## License
28 | This code is released under the MIT license.
29 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "lightning-admin-angular": {
7 | "root": "",
8 | "sourceRoot": "src",
9 | "projectType": "application",
10 | "prefix": "app",
11 | "schematics": {
12 | "@schematics/angular:component": {
13 | "styleext": "scss"
14 | }
15 | },
16 | "architect": {
17 | "build": {
18 | "builder": "@angular-devkit/build-angular:browser",
19 | "options": {
20 | "outputPath": "demo",
21 | "index": "src/index.html",
22 | "main": "src/main.ts",
23 | "polyfills": "src/polyfills.ts",
24 | "tsConfig": "src/tsconfig.app.json",
25 | "assets": [
26 | "src/favicon.ico",
27 | "src/assets"
28 | ],
29 | "styles": [
30 | "src/styles.scss"
31 | ],
32 | "scripts": []
33 | },
34 | "configurations": {
35 | "production": {
36 | "fileReplacements": [
37 | {
38 | "replace": "src/environments/environment.ts",
39 | "with": "src/environments/environment.prod.ts"
40 | }
41 | ],
42 | "optimization": true,
43 | "outputHashing": "all",
44 | "sourceMap": false,
45 | "extractCss": true,
46 | "namedChunks": false,
47 | "aot": true,
48 | "extractLicenses": true,
49 | "vendorChunk": false,
50 | "buildOptimizer": true,
51 | "budgets": [
52 | {
53 | "type": "initial",
54 | "maximumWarning": "2mb",
55 | "maximumError": "5mb"
56 | }
57 | ]
58 | }
59 | }
60 | },
61 | "serve": {
62 | "builder": "@angular-devkit/build-angular:dev-server",
63 | "options": {
64 | "browserTarget": "lightning-admin-angular:build"
65 | },
66 | "configurations": {
67 | "production": {
68 | "browserTarget": "lightning-admin-angular:build:production"
69 | }
70 | }
71 | },
72 | "extract-i18n": {
73 | "builder": "@angular-devkit/build-angular:extract-i18n",
74 | "options": {
75 | "browserTarget": "lightning-admin-angular:build"
76 | }
77 | },
78 | "test": {
79 | "builder": "@angular-devkit/build-angular:karma",
80 | "options": {
81 | "main": "src/test.ts",
82 | "polyfills": "src/polyfills.ts",
83 | "tsConfig": "src/tsconfig.spec.json",
84 | "karmaConfig": "src/karma.conf.js",
85 | "styles": [
86 | "src/styles.scss"
87 | ],
88 | "scripts": [],
89 | "assets": [
90 | "src/favicon.ico",
91 | "src/assets"
92 | ]
93 | }
94 | },
95 | "lint": {
96 | "builder": "@angular-devkit/build-angular:tslint",
97 | "options": {
98 | "tsConfig": [
99 | "src/tsconfig.app.json",
100 | "src/tsconfig.spec.json"
101 | ],
102 | "exclude": [
103 | "**/node_modules/**"
104 | ]
105 | }
106 | }
107 | }
108 | },
109 | "lightning-admin-angular-e2e": {
110 | "root": "e2e/",
111 | "projectType": "application",
112 | "prefix": "",
113 | "architect": {
114 | "e2e": {
115 | "builder": "@angular-devkit/build-angular:protractor",
116 | "options": {
117 | "protractorConfig": "e2e/protractor.conf.js",
118 | "devServerTarget": "lightning-admin-angular:serve"
119 | },
120 | "configurations": {
121 | "production": {
122 | "devServerTarget": "lightning-admin-angular:serve:production"
123 | }
124 | }
125 | },
126 | "lint": {
127 | "builder": "@angular-devkit/build-angular:tslint",
128 | "options": {
129 | "tsConfig": "e2e/tsconfig.e2e.json",
130 | "exclude": [
131 | "**/node_modules/**"
132 | ]
133 | }
134 | }
135 | }
136 | }
137 | },
138 | "defaultProject": "lightning-admin-angular"
139 | }
140 |
--------------------------------------------------------------------------------
/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter');
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: [
9 | './src/**/*.e2e-spec.ts'
10 | ],
11 | capabilities: {
12 | 'browserName': 'chrome'
13 | },
14 | directConnect: true,
15 | baseUrl: 'http://localhost:4200/',
16 | framework: 'jasmine',
17 | jasmineNodeOpts: {
18 | showColors: true,
19 | defaultTimeoutInterval: 30000,
20 | print: function() {}
21 | },
22 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('workspace-project App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getTitleText()).toEqual('Welcome to pro-dashboard-angular!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pro-dashboard-angular",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build",
8 | "test": "ng test",
9 | "lint": "ng lint",
10 | "e2e": "ng e2e"
11 | },
12 | "private": true,
13 | "dependencies": {
14 | "@angular/animations": "^7.1.4",
15 | "@angular/common": "~7.1.0",
16 | "@angular/compiler": "~7.1.0",
17 | "@angular/core": "~7.1.0",
18 | "@angular/forms": "~7.1.0",
19 | "@angular/platform-browser": "~7.1.0",
20 | "@angular/platform-browser-dynamic": "~7.1.0",
21 | "@angular/router": "~7.1.0",
22 | "@fortawesome/fontawesome-free": "^5.8.2",
23 | "bootstrap": "^4.3.1",
24 | "chart.js": "^2.7.3",
25 | "core-js": "^2.5.4",
26 | "hamburgers": "^1.1.3",
27 | "ngx-bootstrap": "^3.1.4",
28 | "ngx-toastr": "^9.1.2",
29 | "rxjs": "~6.3.3",
30 | "tslib": "^1.9.0",
31 | "zone.js": "~0.8.26"
32 | },
33 | "devDependencies": {
34 | "@angular-devkit/build-angular": "^0.13.9",
35 | "@angular/cli": "^7.3.9",
36 | "@angular/compiler-cli": "^7.2.15",
37 | "@angular/language-service": "~7.1.0",
38 | "@types/jasmine": "~2.8.8",
39 | "@types/jasminewd2": "~2.0.3",
40 | "@types/node": "~8.9.4",
41 | "codelyzer": "~4.5.0",
42 | "jasmine-core": "~2.99.1",
43 | "jasmine-spec-reporter": "~4.2.1",
44 | "karma": "~3.1.1",
45 | "karma-chrome-launcher": "~2.2.0",
46 | "karma-coverage-istanbul-reporter": "~2.0.1",
47 | "karma-jasmine": "~1.1.2",
48 | "karma-jasmine-html-reporter": "^0.2.2",
49 | "node-sass": "^4.12.0",
50 | "protractor": "~5.4.0",
51 | "ts-node": "~7.0.0",
52 | "tslint": "~5.11.0",
53 | "typescript": "~3.1.6"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { DashboardComponent } from './pages/dashboard/dashboard.component';
4 | import { TablesComponent } from './pages/tables/tables.component';
5 | import { FormsComponent } from './pages/forms/forms.component';
6 | import { TypographyComponent } from './pages/typography/typography.component';
7 | import { MapsComponent } from './pages/maps/maps.component';
8 | import { NotificationsComponent } from './pages/notifications/notifications.component';
9 |
10 | const routes: Routes = [
11 | {path: '', redirectTo: '/dashboard', pathMatch: 'full'},
12 | {path: 'dashboard', component: DashboardComponent},
13 | {path: 'forms', component: FormsComponent},
14 | {path: 'tables', component: TablesComponent},
15 | {path: 'typography', component: TypographyComponent},
16 | {path: 'maps', component: MapsComponent},
17 | {path: 'notifications', component: NotificationsComponent}
18 | ];
19 |
20 | @NgModule({
21 | imports: [RouterModule.forRoot(routes)],
22 | exports: [RouterModule]
23 | })
24 | export class AppRoutingModule { }
25 |
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/app.component.scss
--------------------------------------------------------------------------------
/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, async } from '@angular/core/testing';
2 | import { RouterTestingModule } from '@angular/router/testing';
3 | import { AppComponent } from './app.component';
4 |
5 | describe('AppComponent', () => {
6 | beforeEach(async(() => {
7 | TestBed.configureTestingModule({
8 | imports: [
9 | RouterTestingModule
10 | ],
11 | declarations: [
12 | AppComponent
13 | ],
14 | }).compileComponents();
15 | }));
16 |
17 | it('should create the app', () => {
18 | const fixture = TestBed.createComponent(AppComponent);
19 | const app = fixture.debugElement.componentInstance;
20 | expect(app).toBeTruthy();
21 | });
22 |
23 | it(`should have as title 'pro-dashboard-angular'`, () => {
24 | const fixture = TestBed.createComponent(AppComponent);
25 | const app = fixture.debugElement.componentInstance;
26 | expect(app.title).toEqual('pro-dashboard-angular');
27 | });
28 |
29 | it('should render title in a h1 tag', () => {
30 | const fixture = TestBed.createComponent(AppComponent);
31 | fixture.detectChanges();
32 | const compiled = fixture.debugElement.nativeElement;
33 | expect(compiled.querySelector('h1').textContent).toContain('Welcome to pro-dashboard-angular!');
34 | });
35 | });
36 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { AppService } from './services/app.service';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | templateUrl: './app.component.html',
7 | styleUrls: ['./app.component.scss']
8 | })
9 | export class AppComponent {
10 | title = 'pro-dashboard-angular';
11 |
12 | constructor(private appService: AppService) {}
13 | getClasses() {
14 | const classes = {
15 | 'pinned-sidebar': this.appService.getSidebarStat().isSidebarPinned,
16 | 'toggeled-sidebar': this.appService.getSidebarStat().isSidebarToggeled
17 | }
18 | return classes;
19 | }
20 | toggleSidebar() {
21 | this.appService.toggleSidebar();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { CommonModule } from '@angular/common';
4 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
5 |
6 | import { CollapseModule } from 'ngx-bootstrap/collapse';
7 | import { ToastrModule } from 'ngx-toastr';
8 |
9 | import { AppRoutingModule } from './app-routing.module';
10 |
11 | import { AppComponent } from './app.component';
12 | import { NavbarComponent } from './components/navbar/navbar.component';
13 | import { SidebarComponent } from './components/sidebar/sidebar.component';
14 | import { FooterComponent } from './components/footer/footer.component';
15 | import { DashboardComponent } from './pages/dashboard/dashboard.component';
16 | import { TablesComponent } from './pages/tables/tables.component';
17 | import { FormsComponent } from './pages/forms/forms.component';
18 | import { TypographyComponent } from './pages/typography/typography.component';
19 | import { MapsComponent } from './pages/maps/maps.component';
20 | import { NotificationsComponent } from './pages/notifications/notifications.component';
21 |
22 | @NgModule({
23 | declarations: [
24 | AppComponent,
25 | NavbarComponent,
26 | SidebarComponent,
27 | FooterComponent,
28 | DashboardComponent,
29 | TablesComponent,
30 | FormsComponent,
31 | TypographyComponent,
32 | MapsComponent,
33 | NotificationsComponent
34 | ],
35 | imports: [
36 | BrowserModule,
37 | AppRoutingModule,
38 | CommonModule,
39 | BrowserAnimationsModule,
40 | CollapseModule.forRoot(),
41 | ToastrModule.forRoot()
42 | ],
43 | providers: [],
44 | bootstrap: [AppComponent]
45 | })
46 | export class AppModule { }
47 |
--------------------------------------------------------------------------------
/src/app/components/footer/footer.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | © 2019 made with by Mohamed
6 | Azouaoui
7 |
8 |
20 |
21 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/app/components/footer/footer.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/components/footer/footer.component.scss
--------------------------------------------------------------------------------
/src/app/components/footer/footer.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { FooterComponent } from './footer.component';
4 |
5 | describe('FooterComponent', () => {
6 | let component: FooterComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ FooterComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(FooterComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/components/footer/footer.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-footer',
5 | templateUrl: './footer.component.html',
6 | styleUrls: ['./footer.component.scss']
7 | })
8 | export class FooterComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/components/navbar/navbar.component.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
13 |
14 |
17 |
18 |
19 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
35 |
36 |
37 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/src/app/components/navbar/navbar.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/components/navbar/navbar.component.scss
--------------------------------------------------------------------------------
/src/app/components/navbar/navbar.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { NavbarComponent } from './navbar.component';
4 |
5 | describe('NavbarComponent', () => {
6 | let component: NavbarComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ NavbarComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(NavbarComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/components/navbar/navbar.component.ts:
--------------------------------------------------------------------------------
1 | import { AppService } from './../../services/app.service';
2 | import { Component, OnInit } from '@angular/core';
3 |
4 | @Component({
5 | selector: 'app-navbar',
6 | templateUrl: './navbar.component.html',
7 | styleUrls: ['./navbar.component.scss']
8 | })
9 | export class NavbarComponent implements OnInit {
10 |
11 | constructor(private appService: AppService) { }
12 | isCollapsed = true;
13 | ngOnInit() {
14 | }
15 |
16 | toggleSidebarPin() {
17 | this.appService.toggleSidebarPin();
18 | }
19 | toggleSidebar() {
20 | this.appService.toggleSidebar();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/app/components/sidebar/sidebar.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/components/sidebar/sidebar.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/components/sidebar/sidebar.component.scss
--------------------------------------------------------------------------------
/src/app/components/sidebar/sidebar.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { SidebarComponent } from './sidebar.component';
4 |
5 | describe('SidebarComponent', () => {
6 | let component: SidebarComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ SidebarComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(SidebarComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/components/sidebar/sidebar.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-sidebar',
5 | templateUrl: './sidebar.component.html',
6 | styleUrls: ['./sidebar.component.scss']
7 | })
8 | export class SidebarComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/pages/dashboard/dashboard.component.html:
--------------------------------------------------------------------------------
1 |
2 |
Dashboard
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Revenue
15 |
$ 199,099
16 |
17 |
18 |
19 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
Orders
38 |
2,200
39 |
40 |
41 |
42 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
Visitors
61 |
702,258
62 |
63 |
64 |
65 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
Followers
84 |
+50K
85 |
86 |
87 |
88 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
Chart Line
106 |
107 |
108 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
Chart Bar
120 |
121 |
122 |
127 |
128 |
129 |
130 |
131 |
132 |
Chart Doughnut
133 |
134 |
135 |
140 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
Purchases
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 | Product
167 | Price
168 | Date
169 | State
170 |
171 |
172 |
173 |
174 |
175 | Sony Xperia M4
176 | $149
177 | Aug 23, 2018
178 | Completed
179 |
180 |
181 |
182 | Apple iPhone 6
183 | $535
184 | Aug 20, 2018
185 | Completed
186 |
187 |
188 |
189 | Samsung Galaxy S7
190 | $583
191 | Aug 18, 2018
192 | Pending
193 |
194 |
195 |
196 | HTC One M9
197 | $350
198 | Aug 15, 2018
199 | Pending
200 |
201 |
202 |
203 | Sony Xperia Z5
204 | $495
205 | Aug 13, 2018
206 | Cancelled
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
--------------------------------------------------------------------------------
/src/app/pages/dashboard/dashboard.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/dashboard/dashboard.component.scss
--------------------------------------------------------------------------------
/src/app/pages/dashboard/dashboard.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { DashboardComponent } from './dashboard.component';
4 |
5 | describe('DashboardComponent', () => {
6 | let component: DashboardComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ DashboardComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(DashboardComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/dashboard/dashboard.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Chart } from 'chart.js';
3 |
4 | @Component({
5 | selector: 'app-dashboard',
6 | templateUrl: './dashboard.component.html',
7 | styleUrls: ['./dashboard.component.scss']
8 | })
9 | export class DashboardComponent implements OnInit {
10 |
11 |
12 | chart1 = {
13 | data :{
14 | labels: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
15 | datasets: [{
16 | label: 'Premium',
17 | data: [50, 80, 60, 120, 80, 100, 60],
18 | backgroundColor: 'transparent',
19 | borderColor: '#5b6582',
20 | borderWidth: 2
21 | },
22 | {
23 | label: 'Free',
24 | data: [100, 60, 80, 50, 140, 60, 100],
25 | backgroundColor: 'transparent',
26 | borderColor: '#36a2eb',
27 | borderWidth: 2
28 | }
29 | ]
30 | },
31 | options:{
32 | scales: {
33 | yAxes: [{
34 | ticks: {
35 | fontColor: 'rgba(0,0,0,.6)',
36 | fontStyle: 'bold',
37 | beginAtZero: true,
38 | maxTicksLimit: 8,
39 | padding: 10
40 | }
41 | }]
42 | },
43 | responsive: true,
44 | legend: {
45 | position:'bottom',
46 | display:false
47 | },
48 | }
49 | };
50 | chart2 = {
51 | data :{
52 | labels: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
53 | datasets: [{
54 | label: 'Premium',
55 | data: [50, 80, 60, 120, 80, 100, 60],
56 | backgroundColor: '#5b6582',
57 | borderColor: '#5b6582',
58 | borderWidth: 2
59 | },
60 | {
61 | label: 'Free',
62 | data: [100, 60, 80, 50, 140, 60, 100],
63 | backgroundColor: '#36a2eb',
64 | borderColor: '#36a2eb',
65 | borderWidth: 2
66 | }
67 | ]
68 | },
69 | options:{
70 | barValueSpacing: 1,
71 | scales: {
72 | yAxes: [{
73 | ticks: {
74 | fontColor: 'rgba(0,0,0,.6)',
75 | fontStyle: 'bold',
76 | beginAtZero: true,
77 | maxTicksLimit: 8,
78 | padding: 10
79 | }
80 | }],
81 | xAxes: [{
82 | barPercentage: 0.4
83 | }]
84 | },
85 | responsive: true,
86 | legend: {
87 | position:'bottom',
88 | display:false
89 | },
90 | }
91 | };
92 | chart3 = {
93 | data:{
94 | datasets: [{
95 | data: [6, 12, 10],
96 | backgroundColor: ["#5b6582","#98a4c7","#36a2eb"],
97 | }],
98 | labels: [
99 | 'html',
100 | 'css',
101 | 'javascript'
102 | ]
103 |
104 | },
105 | options:{
106 | legend: {
107 | position:'bottom',
108 | display:false
109 | },
110 | cutoutPercentage: 80
111 | }
112 | };
113 |
114 | constructor() { }
115 |
116 | ngOnInit() {
117 |
118 | new Chart('chart-line', {
119 | type: 'line',
120 | data: this.chart1.data,
121 | options: this.chart1.options
122 | });
123 | new Chart('chart-bar', {
124 | type: 'bar',
125 | data: this.chart2.data ,
126 | options: this.chart2.options
127 | });
128 | new Chart('chart-doughnut', {
129 | type: 'doughnut',
130 | data: this.chart3.data,
131 | options:this.chart3.options
132 | });
133 |
134 | }
135 |
136 | }
137 |
--------------------------------------------------------------------------------
/src/app/pages/forms/forms.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Forms
4 |
5 |
6 |
7 |
8 |
9 |
Basic Form
10 |
11 |
31 |
32 |
33 |
34 |
35 |
36 |
Horizontal Form
37 |
38 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
Basic Form Elements
88 |
89 |
134 |
135 |
136 |
137 |
--------------------------------------------------------------------------------
/src/app/pages/forms/forms.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/forms/forms.component.scss
--------------------------------------------------------------------------------
/src/app/pages/forms/forms.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { FormsComponent } from './forms.component';
4 |
5 | describe('FormsComponent', () => {
6 | let component: FormsComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ FormsComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(FormsComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/forms/forms.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-forms',
5 | templateUrl: './forms.component.html',
6 | styleUrls: ['./forms.component.scss']
7 | })
8 | export class FormsComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/pages/maps/maps.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Maps
4 |
5 |
6 |
7 |
8 |
9 |
Google Maps
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/app/pages/maps/maps.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/maps/maps.component.scss
--------------------------------------------------------------------------------
/src/app/pages/maps/maps.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { MapsComponent } from './maps.component';
4 |
5 | describe('MapsComponent', () => {
6 | let component: MapsComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ MapsComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(MapsComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/maps/maps.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-maps',
5 | templateUrl: './maps.component.html',
6 | styleUrls: ['./maps.component.scss']
7 | })
8 | export class MapsComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/pages/notifications/notifications.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Notifications
4 |
5 |
6 |
7 |
8 |
9 |
Basic Alerts
10 |
11 |
12 |
13 | Success Message
14 | Info Message
15 | Warning Message
16 | Danger Message
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Notifications Places
27 |
28 |
29 |
30 |
31 | Top Left
32 | Message
33 |
34 |
35 | Top
36 | Center Message
37 |
38 |
39 | Top
40 | Right Message
41 |
42 |
43 | Bottom
44 | Left Message
45 |
46 |
47 | Bottom
48 | Center Message
49 |
50 |
51 | Bottom
52 | Right Message
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
Bootstrap Alerts
64 |
65 |
66 |
67 |
68 | A simple primary alert—check it out!
69 |
70 |
71 | A simple secondary alert—check it out!
72 |
73 |
74 | A simple success alert—check it out!
75 |
76 |
77 | A simple danger alert—check it out!
78 |
79 |
80 | A simple warning alert—check it out!
81 |
82 |
83 | A simple info alert—check it out!
84 |
85 |
86 | A simple light alert—check it out!
87 |
88 |
89 | A simple dark alert—check it out!
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/src/app/pages/notifications/notifications.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/notifications/notifications.component.scss
--------------------------------------------------------------------------------
/src/app/pages/notifications/notifications.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { NotificationsComponent } from './notifications.component';
4 |
5 | describe('NotificationsComponent', () => {
6 | let component: NotificationsComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ NotificationsComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(NotificationsComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/notifications/notifications.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { ToastrService } from 'ngx-toastr';
3 |
4 | @Component({
5 | selector: 'app-notifications',
6 | templateUrl: './notifications.component.html',
7 | styleUrls: ['./notifications.component.scss']
8 | })
9 | export class NotificationsComponent implements OnInit {
10 |
11 | constructor(public toastr: ToastrService) { }
12 |
13 | ngOnInit() {
14 | }
15 |
16 | showSuccess() {
17 | this.toastr.success('This is a success toastr message!', 'Success');
18 | }
19 | showInfo() {
20 | this.toastr.info('This is an info toastr message!', 'Info');
21 | }
22 | showWarning() {
23 | this.toastr.warning('This is a warning toastr message!', 'Warning');
24 | }
25 | showError() {
26 | this.toastr.error('This is an error toastr message!', 'Error');
27 | }
28 | showToastr(positionClass) {
29 | this.toastr.info('Hello world!', 'Toastr fun!', {
30 | positionClass
31 | });
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/app/pages/tables/tables.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Tables
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Basic table
11 |
12 |
13 |
14 |
15 |
16 |
17 | #
18 | First
19 | Last
20 | Handle
21 | Status
22 | Actions
23 |
24 |
25 |
26 |
27 | 1
28 | Mark
29 | Otto
30 | @mdo
31 |
32 | Fixed
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | 2
45 | Jacob
46 | Thornton
47 | @fat
48 |
49 | In progress
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 3
62 | Larry
63 | the Bird
64 | @twitter
65 |
66 | Completed
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | 4
79 | Jhon
80 | Smith
81 | @Instagram
82 |
83 | Pending
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 | 5
96 | David
97 | the Mad
98 | @Facebook
99 |
100 | Created
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
Striped table
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 | Task
136 | Progress
137 | Deadline
138 | Action
139 |
140 |
141 |
142 |
143 | Lunar probe project
144 |
145 |
148 |
149 | May 15, 2020
150 |
151 | Cancel
152 |
153 |
154 |
155 | Dream successful plan
156 |
157 |
160 |
161 | July 1, 2020
162 |
163 | Cancel
164 |
165 |
166 |
167 | Office automatization
168 |
169 |
172 |
173 | Apr 12, 2020
174 |
175 | Cancel
176 |
177 |
178 |
179 | The sun climbing plan
180 |
181 |
184 |
185 | Aug 9, 2020
186 |
187 | Cancel
188 |
189 |
190 |
191 | Open strategy
192 |
193 |
196 |
197 | Apr 2, 2020
198 |
199 | Cancel
200 |
201 |
202 |
203 | Tantas earum numeris
204 |
205 |
208 |
209 | July 11, 2020
210 |
211 | Cancel
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
--------------------------------------------------------------------------------
/src/app/pages/tables/tables.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/tables/tables.component.scss
--------------------------------------------------------------------------------
/src/app/pages/tables/tables.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { TablesComponent } from './tables.component';
4 |
5 | describe('TablesComponent', () => {
6 | let component: TablesComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ TablesComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(TablesComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/tables/tables.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-tables',
5 | templateUrl: './tables.component.html',
6 | styleUrls: ['./tables.component.scss']
7 | })
8 | export class TablesComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/pages/typography/typography.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Typography
4 |
5 |
6 |
7 |
8 |
9 |
Headings
10 |
11 |
12 |
13 |
H1. Bootstrap Heading
14 | H2. Bootstrap Heading
15 | H3. Bootstrap Heading
16 | H4. Bootstrap Heading
17 | H5. Bootstrap Heading
18 | H6. Bootstrap Heading
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Secondary headings
27 |
28 |
29 |
30 |
H1. Bootstrap Heading
31 | H2. Bootstrap Heading
32 | H3. Bootstrap Heading
33 | H4. Bootstrap Heading
34 | H5. Bootstrap Heading
35 | H6. Bootstrap Heading
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
Text colors
46 |
47 |
48 |
49 |
This is an example of muted text.
50 |
This is an example of primary text.
51 |
This is an example of success text.
52 |
This is an example of info text.
53 |
This is an example of warning text.
54 |
This is an example of danger text.
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
Paragraph
63 |
64 |
65 |
66 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
67 | eiusmod tempor incididunt ut labore et
68 | dolore magna aliqua. Sit amet justo donec enim diam. Vel eros donec ac
69 | odio .
70 | Amet mattis vulputate enim
71 | nulla aliquet. Nec ultrices dui sapien eget . Ut venenatis tellus in
72 | metus.
73 | Dui faucibus in ornare quam
74 | viverra orci sagittis eu volutpat. Dictum at tempor commodo ullamcorper a lacus vestibulum. Id nibh
75 | tortor
76 | id aliquet lectus proin. Morbi tempus iaculis urna id. Lorem donec massa sapien faucibus et molestie ac.
77 | Magna sit amet purus gravida. Auctor urna nunc id cursus metus aliquam eleifend. Vestibulum lectus mauris
78 | ultrices eros in cursus turpis. Pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu
79 | vitae. Lacinia at quis risus sed vulputate odio ut enim.
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/src/app/pages/typography/typography.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/app/pages/typography/typography.component.scss
--------------------------------------------------------------------------------
/src/app/pages/typography/typography.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { TypographyComponent } from './typography.component';
4 |
5 | describe('TypographyComponent', () => {
6 | let component: TypographyComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ TypographyComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(TypographyComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/src/app/pages/typography/typography.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-typography',
5 | templateUrl: './typography.component.html',
6 | styleUrls: ['./typography.component.scss']
7 | })
8 | export class TypographyComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/services/app.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { AppService } from './app.service';
4 |
5 | describe('AppService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: AppService = TestBed.get(AppService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/src/app/services/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | @Injectable({
4 | providedIn: 'root'
5 | })
6 | export class AppService {
7 |
8 | isSidebarPinned = false;
9 | isSidebarToggeled = false;
10 |
11 | constructor() { }
12 |
13 | toggleSidebar() {
14 | this.isSidebarToggeled = ! this.isSidebarToggeled;
15 | }
16 |
17 | toggleSidebarPin() {
18 | this.isSidebarPinned = ! this.isSidebarPinned;
19 | }
20 |
21 | getSidebarStat() {
22 | return {
23 | isSidebarPinned: this.isSidebarPinned,
24 | isSidebarToggeled: this.isSidebarToggeled
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/assets/.gitkeep
--------------------------------------------------------------------------------
/src/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/assets/img/logo.png
--------------------------------------------------------------------------------
/src/assets/img/user.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/assets/img/user.jpg
--------------------------------------------------------------------------------
/src/assets/lightning-admin.scss:
--------------------------------------------------------------------------------
1 | @import "./partials/variables";
2 | @import "./partials/navbar";
3 | @import "./partials/navbar.scss";
4 | @import "./partials/sidebar";
5 | @import "./partials/themes";
6 |
7 | @import "./partials/dashboard";
8 |
9 |
10 | .icon-style {
11 | width: 35px;
12 | height: 35px;
13 | text-align: center;
14 | line-height: 35px;
15 | border-radius: 50%;
16 | border: 1px solid;
17 | font-size: .9rem;
18 | }
19 |
20 | body {
21 | height: 100vh;
22 | margin: 0;
23 | padding-top: 60px;
24 | }
25 |
26 | .wrapper {
27 | height: 100%;
28 |
29 | main {
30 | display: flex;
31 | height: 100%;
32 |
33 | .pages {
34 | overflow: auto;
35 | }
36 |
37 | .overlay {
38 | position: fixed;
39 | top: 0;
40 | right: 0;
41 | bottom: 0;
42 | left: 0;
43 | z-index: 100;
44 | opacity: .7;
45 | display: none;
46 |
47 | &.show {
48 |
49 | display: block;
50 |
51 | @media (min-width: 768px) {
52 | display: none;
53 | }
54 | }
55 | }
56 | }
57 |
58 | &.toggeled-sidebar {
59 | main {
60 | .overlay {
61 | display: block;
62 |
63 | @media (min-width: 768px) {
64 | display: none;
65 | }
66 | }
67 | }
68 | }
69 | }
70 |
71 | .toast {
72 | opacity: 1;
73 | }
74 |
--------------------------------------------------------------------------------
/src/assets/partials/_dashboard.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | .card-icon {
3 | i {
4 | width: 50px;
5 | height: 50px;
6 | line-height: 50px;
7 | text-align: center;
8 | border-radius: 50%;
9 | font-size: 3rem;
10 | }
11 | }
12 | .legend{
13 | span:first-child{
14 | width: 10px;
15 | height: 10px;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assets/partials/_navbar.scss:
--------------------------------------------------------------------------------
1 | .wrapper {
2 |
3 | nav.navbar {
4 | height: $navbar-height;
5 | padding: 0;
6 | border-bottom: 1px solid;
7 |
8 | .navbar-header {
9 |
10 | .navbar-brand {
11 | font-size: 1rem;
12 | font-weight: normal;
13 | letter-spacing: 2px;
14 |
15 | span {
16 | display: none;
17 | }
18 | }
19 | }
20 |
21 | .nav-toggler-right {
22 | position: relative;
23 |
24 |
25 | button {
26 |
27 | width: 35px;
28 | height: 35px;
29 | padding: 0;
30 | border: none;
31 | overflow: hidden;
32 | border-radius: 50%;
33 | border: 1px solid #fff;
34 |
35 | img {
36 |
37 | height: 100%;
38 | width: 100%;
39 | object-fit: cover;
40 | object-position: center;
41 |
42 | }
43 | }
44 |
45 | .nav-alert {
46 | right: 0px;
47 | border-width: 1px;
48 | width: 9px;
49 | height: 9px;
50 | }
51 |
52 | }
53 |
54 | .nav-alert {
55 | display: inline-block;
56 | width: 11px;
57 | height: 11px;
58 | border-radius: 50%;
59 | position: absolute;
60 | top: 0;
61 | border: 3px solid #1c1e21;
62 | transform: translateX(13px);
63 |
64 | @media (min-width: 768px) {
65 | right: 20px;
66 | transform: translateX(0);
67 | }
68 |
69 | &.user-profile {
70 | transform: translateX(2px);
71 | }
72 | }
73 |
74 |
75 | .navbar-header {
76 | height: 100%;
77 | display: flex;
78 | align-items: center;
79 |
80 | }
81 |
82 | .user-profile {
83 | span {
84 | display: none;
85 | }
86 | }
87 |
88 | .right-nav {
89 | border-top: 1px solid;
90 | padding-top: 1rem;
91 | padding-bottom: 1rem;
92 | height: calc(100vh - #{$navbar-height} + 1px) !important;
93 |
94 | ul {
95 | display: flex;
96 | flex-direction: row;
97 | justify-content: space-between;
98 | flex-wrap: wrap;
99 |
100 | li {
101 | flex: 1 1 0;
102 | max-width: 110px;
103 | padding: 1rem;
104 |
105 | .nav-link {
106 | position: relative;
107 | display: flex;
108 | align-items: center;
109 | flex-direction: column;
110 | justify-content: center;
111 |
112 | .link-text {
113 | margin-top: 10px;
114 | font-size: .9rem;
115 | text-transform: uppercase;
116 | }
117 | }
118 | }
119 |
120 | }
121 | }
122 |
123 | .nav-link {
124 | padding: 0;
125 |
126 | i {
127 | font-size: 1.1rem;
128 | width: 40px;
129 | height: 40px;
130 | line-height: 40px;
131 | border-radius: 0;
132 | }
133 | }
134 |
135 | .left-nav {
136 | display: none;
137 |
138 |
139 | input.navbar-search {
140 | max-width: 500px;
141 | border-radius: 0;
142 | border: none;
143 | height: 40px;
144 | font-size: .9rem;
145 | }
146 |
147 | }
148 |
149 | @media (min-width: 768px) {
150 |
151 | .sidebar-toggler {
152 | display: none;
153 | }
154 |
155 | .navbar-header {
156 | width: $sidebar-width;
157 | margin-left: 0!important;
158 | .navbar-brand span {
159 | display: inline-block;
160 | }
161 | }
162 |
163 |
164 | .left-nav {
165 | display: flex;
166 | }
167 |
168 | .nav-link {
169 | padding-left: .3rem;
170 | padding-right: .3rem;
171 | }
172 |
173 | .nav-alert {
174 | right: 12px;
175 | }
176 |
177 | .right-nav {
178 | height: 100% !important;
179 | border-top: none;
180 | background: none !important;
181 |
182 | ul {
183 |
184 | margin-left: auto;
185 | flex-wrap: nowrap;
186 |
187 | li {
188 | padding: 0;
189 |
190 | .nav-link {
191 |
192 | .link-text {
193 | display: none;
194 | }
195 | }
196 | }
197 | }
198 |
199 | }
200 | }
201 |
202 | }
203 | }
--------------------------------------------------------------------------------
/src/assets/partials/_sidebar.scss:
--------------------------------------------------------------------------------
1 | .wrapper {
2 | main {
3 | position: relative;
4 |
5 | .sidebar {
6 | height: 100%;
7 | width: $sidebar-width;
8 | position: absolute;
9 | transition: left .3s ease;
10 | left: -$sidebar-width;
11 | top: 0;
12 | z-index: 111;
13 | overflow: auto;
14 |
15 | >div {
16 | border-bottom: 1px solid;
17 |
18 | &:last-child {
19 | border-bottom: none;
20 | }
21 | }
22 |
23 | .sidebar-profile {
24 |
25 | .user-picture {
26 | width: 60px;
27 | height: 60px;
28 | border-radius: 50%;
29 | overflow: hidden;
30 |
31 | img {
32 | width: 100%;
33 | height: 100%;
34 | object-fit: cover;
35 | object-position: center;
36 | }
37 | }
38 |
39 | .profile-details {
40 | .name {
41 | font-size: .9rem;
42 | font-weight: 800;
43 | }
44 |
45 | .role {
46 | font-size: .7rem;
47 | letter-spacing: 1px;
48 | font-weight: 700;
49 | }
50 | }
51 | }
52 |
53 | .sidebar-search {
54 | display: none;
55 | }
56 |
57 | .sidebar-menu {
58 | >div {
59 | padding: 0 1.5rem;
60 | }
61 |
62 | .menu-header {
63 | padding: 0 1.5rem;
64 | font-size: .75rem;
65 | text-transform: uppercase;
66 | font-weight: 700;
67 | }
68 |
69 | ul {
70 | list-style-type: none;
71 | margin: 0;
72 | padding: 0;
73 |
74 | li {
75 | display: block;
76 |
77 | a {
78 | text-decoration: none;
79 | display: flex;
80 | align-items: center;
81 | width: 100%;
82 | height: 45px;
83 | line-height: 45px;
84 | padding: 0 1.5rem;
85 | font-size: 0.8rem;
86 | letter-spacing: 0px;
87 | font-weight: 600;
88 |
89 | i {
90 | @extend .icon-style;
91 | font-size: 1rem;
92 | }
93 |
94 | span {
95 | color: inherit;
96 | margin-left: 1rem;
97 | }
98 | }
99 | }
100 | }
101 |
102 | }
103 | }
104 |
105 | @media (min-width: 768px) {
106 | .sidebar {
107 | position: static;
108 | height: 100%;
109 | }
110 | }
111 | }
112 |
113 | &.pinned-sidebar {
114 | @media (min-width: 768px) {
115 | .navbar-header{
116 | width: $sidebar-pinned-wdth!important;
117 | span{
118 | display: none!important;
119 | }
120 | }
121 |
122 | .sidebar {
123 | width: $sidebar-pinned-wdth;
124 |
125 | .sidebar-profile {
126 |
127 | .user-picture {
128 | width: 40px;
129 | height: 40px;
130 | }
131 |
132 | }
133 |
134 | .profile-details,
135 | .menu-header,
136 | .view-source {
137 | display: none;
138 | }
139 |
140 | .sidebar-menu {
141 | ul a {
142 | padding: .5rem;
143 | justify-content: center;
144 |
145 | span {
146 | display: none;
147 | }
148 | }
149 | }
150 | }
151 |
152 | }
153 | }
154 |
155 | &.toggeled-sidebar {
156 | .sidebar {
157 | left: 0;
158 | }
159 | }
160 | }
--------------------------------------------------------------------------------
/src/assets/partials/_themes.scss:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Roboto&display=swap');
2 | @import url('https://fonts.googleapis.com/css?family=Poppins&display=swap');
3 |
4 | $bg-color:#f2f3f8;
5 | $navbar-bg-color : #242939;
6 | $navbar-color:#6e7899;
7 | $sidebar-bg-color:#fff;
8 | $sidebar-color:#3d4465;
9 | $sidebar-icon-color:#c4cff9;
10 | $border-color: #f2f3f8;
11 |
12 | body {
13 | font-family: 'Poppins','Roboto', sans-serif;
14 | font-size: .9rem;
15 | }
16 |
17 |
18 | .wrapper.default-theme {
19 |
20 | background: $bg-color;
21 |
22 | nav.navbar {
23 | background: $navbar-bg-color;
24 | border-color: rgba($navbar-color, .3);
25 |
26 | .navbar-brand {
27 | color: lighten($navbar-color, 25%);
28 | }
29 |
30 | .left-nav {
31 | input.navbar-search {
32 | background: #282f48;
33 | color:$navbar-color;
34 | &::placeholder{
35 | color:rgba($navbar-color, .6);
36 | }
37 | }
38 | }
39 |
40 | .right-nav {
41 | background: $navbar-bg-color;
42 | }
43 |
44 | .nav-link {
45 | color: $navbar-color;
46 |
47 | i {
48 | border-color: $navbar-color;
49 | background: #282f48;
50 | }
51 |
52 | &:hover {
53 | color: lighten($navbar-color, 15%);
54 | }
55 | }
56 |
57 | .nav-alert {
58 | border-color: #2f3546;
59 |
60 | &.notifications {
61 | background-color: #ff61c5;
62 | box-shadow: 0px 0px 4px #ff61c5;
63 |
64 | }
65 |
66 | &.messages {
67 | background-color: #61b8ff;
68 | box-shadow: 0px 0px 4px #61b8ff;
69 |
70 | }
71 | }
72 | }
73 |
74 | main {
75 | .overlay {
76 | background: #242939;
77 | }
78 |
79 | .sidebar {
80 | background: $sidebar-bg-color;
81 |
82 | >div {
83 | border-color: rgba($sidebar-color, .1);
84 | }
85 |
86 | a.sidebar-link {
87 | color: $sidebar-color;
88 |
89 | }
90 |
91 | .sidebar-profile {
92 | .name {
93 | color: $sidebar-color;
94 | }
95 |
96 | .role {
97 | color: rgba($sidebar-color, .8);
98 | }
99 | }
100 |
101 | .sidebar-menu {
102 | .menu-header {
103 | color: rgba($sidebar-color, .5);
104 | }
105 |
106 | .menu-items {
107 | a {
108 | color: rgba($sidebar-color, .7);
109 |
110 | i {
111 | color: $sidebar-icon-color;
112 | color: #abb7da;
113 | color: rgba(140, 165, 239, 0.6);
114 | border: none;
115 | width: auto;
116 | font-size: 1rem;
117 | }
118 |
119 | &:hover,
120 | &.active {
121 | background: #f5f5f9;
122 | color: rgba($sidebar-color, .9);
123 |
124 | i {
125 | color: #95b0ff;
126 | }
127 | }
128 | }
129 | }
130 |
131 | }
132 | }
133 | }
134 |
135 | .card {
136 | box-shadow: 1px 1px 2px rgba(#5b6582, .1);
137 |
138 | .card-title {
139 | color: rgba($sidebar-color, .8);
140 | }
141 |
142 | .card-icon {
143 | i {
144 | color: #98a4c7;
145 | }
146 | }
147 |
148 | .card-footer {
149 | border-top: 1px solid $border-color;
150 | background: none;
151 | }
152 |
153 | .card-title {
154 | border-bottom: 1px solid $border-color;
155 | }
156 | }
157 |
158 | .table {
159 |
160 | th,
161 | td {
162 | border-top: 1px solid darken($border-color,2%);
163 | }
164 |
165 | thead th {
166 | border-bottom: 2px solid darken($border-color,2%);
167 | }
168 |
169 | &.table-striped tbody tr:nth-of-type(odd) {
170 | background-color: lighten($border-color,1%);
171 | }
172 |
173 | &.table-hover tbody tr:hover {
174 | background-color: lighten($border-color, 1%);
175 | }
176 | }
177 |
178 | .btn {
179 | font-size: .9rem;
180 |
181 | &.btn-lightning {
182 | color: #f0f3ff;
183 | background-color: #5b6582;
184 | border-color: #5b6582;
185 |
186 | &:hover {
187 | background-color: #4c5671;
188 | }
189 | }
190 |
191 | &.btn-outline-lightning {
192 | color: #5b6582;
193 | background-color: transparent;
194 | border-color: #5b6582;
195 |
196 | &:hover {
197 | color: #f0f3ff;
198 | background-color: #5b6582;
199 | border-color: #5b6582;
200 | }
201 | }
202 | }
203 |
204 | .form-control {
205 | font-size: .9rem;
206 | }
207 |
208 | .text-lightning {
209 | color: #98a4c7;
210 | }
211 | }
--------------------------------------------------------------------------------
/src/assets/partials/_variables.scss:
--------------------------------------------------------------------------------
1 | $navbar-height: 60px;
2 | $sidebar-width:260px;
3 | $sidebar-pinned-wdth:70px;
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/browserslist:
--------------------------------------------------------------------------------
1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 | #
5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed
6 |
7 | > 0.5%
8 | last 2 versions
9 | Firefox ESR
10 | not dead
11 | not IE 9-11
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
9 | /*
10 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azouaoui-med/lightning-admin-angular/1cdc41b16bdf141a6888fbc7757da1d1f6c6d804/src/favicon.ico
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Lightning
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, '../coverage'),
20 | reports: ['html', 'lcovonly', 'text-summary'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * This file includes polyfills needed by Angular and is loaded before the app.
3 | * You can add your own extra polyfills to this file.
4 | *
5 | * This file is divided into 2 sections:
6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8 | * file.
9 | *
10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13 | *
14 | * Learn more in https://angular.io/guide/browser-support
15 | */
16 |
17 | /***************************************************************************************************
18 | * BROWSER POLYFILLS
19 | */
20 |
21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/
22 | // import 'core-js/es6/symbol';
23 | // import 'core-js/es6/object';
24 | // import 'core-js/es6/function';
25 | // import 'core-js/es6/parse-int';
26 | // import 'core-js/es6/parse-float';
27 | // import 'core-js/es6/number';
28 | // import 'core-js/es6/math';
29 | // import 'core-js/es6/string';
30 | // import 'core-js/es6/date';
31 | // import 'core-js/es6/array';
32 | // import 'core-js/es6/regexp';
33 | // import 'core-js/es6/map';
34 | // import 'core-js/es6/weak-map';
35 | // import 'core-js/es6/set';
36 |
37 | /**
38 | * If the application will be indexed by Google Search, the following is required.
39 | * Googlebot uses a renderer based on Chrome 41.
40 | * https://developers.google.com/search/docs/guides/rendering
41 | **/
42 | // import 'core-js/es6/array';
43 |
44 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
45 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
46 |
47 | /** IE10 and IE11 requires the following for the Reflect API. */
48 | // import 'core-js/es6/reflect';
49 |
50 | /**
51 | * Web Animations `@angular/platform-browser/animations`
52 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
53 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
54 | **/
55 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
56 |
57 | /**
58 | * By default, zone.js will patch all possible macroTask and DomEvents
59 | * user can disable parts of macroTask/DomEvents patch by setting following flags
60 | */
61 |
62 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
63 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
64 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
65 |
66 | /*
67 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
68 | * with the following flag, it will bypass `zone.js` patch for IE/Edge
69 | */
70 | // (window as any).__Zone_enable_cross_context_check = true;
71 |
72 | /***************************************************************************************************
73 | * Zone JS is required by default for Angular itself.
74 | */
75 | import 'zone.js/dist/zone'; // Included with Angular CLI.
76 |
77 |
78 | /***************************************************************************************************
79 | * APPLICATION IMPORTS
80 | */
81 |
--------------------------------------------------------------------------------
/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | // $fa-font-path:"~font-awesome/fonts";
4 | $fa-font-path: "~@fortawesome/fontawesome-free/webfonts";
5 |
6 | $hamburger-padding-x : 0px !default;
7 | $hamburger-padding-y : 0px !default;
8 | $hamburger-layer-width : 25px !default;
9 | $hamburger-layer-height : 2px !default;
10 | $hamburger-layer-spacing : 5px !default;
11 | $hamburger-layer-color : #9b9ea2 !default;
12 | $hamburger-layer-border-radius : 4px !default;
13 | $hamburger-hover-opacity : 0.7 !default;
14 |
15 | @import '~bootstrap/scss/bootstrap';
16 | // @import '~font-awesome/scss/font-awesome';
17 | // @import '~hamburgers/_sass/hamburgers/hamburgers';
18 | @import '~ngx-toastr/toastr-bs4-alert';
19 |
20 | @import '~@fortawesome/fontawesome-free/scss/fontawesome';
21 | @import '~@fortawesome/fontawesome-free/scss/solid';
22 | @import '~@fortawesome/fontawesome-free/scss/regular';
23 | @import '~@fortawesome/fontawesome-free/scss/brands';
24 |
25 | @import './assets/lightning-admin';
26 |
--------------------------------------------------------------------------------
/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/src/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "es2015",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es5",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rulesDirectory": [
3 | "codelyzer"
4 | ],
5 | "rules": {
6 | "arrow-return-shorthand": true,
7 | "callable-types": true,
8 | "class-name": true,
9 | "comment-format": [
10 | true,
11 | "check-space"
12 | ],
13 | "curly": true,
14 | "deprecation": {
15 | "severity": "warn"
16 | },
17 | "eofline": true,
18 | "forin": true,
19 | "import-blacklist": [
20 | true,
21 | "rxjs/Rx"
22 | ],
23 | "import-spacing": true,
24 | "indent": [
25 | true,
26 | "spaces"
27 | ],
28 | "interface-over-type-literal": true,
29 | "label-position": true,
30 | "max-line-length": [
31 | true,
32 | 140
33 | ],
34 | "member-access": false,
35 | "member-ordering": [
36 | true,
37 | {
38 | "order": [
39 | "static-field",
40 | "instance-field",
41 | "static-method",
42 | "instance-method"
43 | ]
44 | }
45 | ],
46 | "no-arg": true,
47 | "no-bitwise": true,
48 | "no-console": [
49 | true,
50 | "debug",
51 | "info",
52 | "time",
53 | "timeEnd",
54 | "trace"
55 | ],
56 | "no-construct": true,
57 | "no-debugger": true,
58 | "no-duplicate-super": true,
59 | "no-empty": false,
60 | "no-empty-interface": true,
61 | "no-eval": true,
62 | "no-inferrable-types": [
63 | true,
64 | "ignore-params"
65 | ],
66 | "no-misused-new": true,
67 | "no-non-null-assertion": true,
68 | "no-redundant-jsdoc": true,
69 | "no-shadowed-variable": true,
70 | "no-string-literal": false,
71 | "no-string-throw": true,
72 | "no-switch-case-fall-through": true,
73 | "no-trailing-whitespace": true,
74 | "no-unnecessary-initializer": true,
75 | "no-unused-expression": true,
76 | "no-use-before-declare": true,
77 | "no-var-keyword": true,
78 | "object-literal-sort-keys": false,
79 | "one-line": [
80 | true,
81 | "check-open-brace",
82 | "check-catch",
83 | "check-else",
84 | "check-whitespace"
85 | ],
86 | "prefer-const": true,
87 | "quotemark": [
88 | true,
89 | "single"
90 | ],
91 | "radix": true,
92 | "semicolon": [
93 | true,
94 | "always"
95 | ],
96 | "triple-equals": [
97 | true,
98 | "allow-null-check"
99 | ],
100 | "typedef-whitespace": [
101 | true,
102 | {
103 | "call-signature": "nospace",
104 | "index-signature": "nospace",
105 | "parameter": "nospace",
106 | "property-declaration": "nospace",
107 | "variable-declaration": "nospace"
108 | }
109 | ],
110 | "unified-signatures": true,
111 | "variable-name": false,
112 | "whitespace": [
113 | true,
114 | "check-branch",
115 | "check-decl",
116 | "check-operator",
117 | "check-separator",
118 | "check-type"
119 | ],
120 | "no-output-on-prefix": true,
121 | "use-input-property-decorator": true,
122 | "use-output-property-decorator": true,
123 | "use-host-property-decorator": true,
124 | "no-input-rename": true,
125 | "no-output-rename": true,
126 | "use-life-cycle-interface": true,
127 | "use-pipe-transform-interface": true,
128 | "component-class-suffix": true,
129 | "directive-class-suffix": true
130 | }
131 | }
132 |
--------------------------------------------------------------------------------