From f8ac914dd27f8ce4137bbe5392fa19144109abb0 Mon Sep 17 00:00:00 2001 From: Karma Tenzin Date: Fri, 22 Jul 2022 17:49:57 +0600 Subject: [PATCH 1/7] feat(assignment): dashboard, footer, sidebar and header ui --- angular.json | 5 + package-lock.json | 101 ++++ src/app/app-routing.module.ts | 11 +- src/app/app.component.html | 483 ------------------ src/app/app.module.ts | 9 +- .../creative-team.component.html | 10 + .../creative-team.component.scss | 0 .../creative-team.component.spec.ts | 23 + .../creative-team/creative-team.component.ts | 15 + src/app/creative-team/creative-team.module.ts | 29 ++ .../dashboard/cards/cards.component.html | 22 + .../dashboard/cards/cards.component.scss | 5 + .../dashboard/cards/cards.component.spec.ts | 23 + .../dashboard/cards/cards.component.ts | 44 ++ .../dashboard/dashboard.component.html | 24 + .../dashboard/dashboard.component.scss | 0 .../dashboard/dashboard.component.spec.ts | 23 + .../dashboard/dashboard.component.ts | 15 + .../dashboard/dashboard.module.ts | 37 ++ .../dashboard/graphs/graphs.component.html | 20 + .../dashboard/graphs/graphs.component.scss | 5 + .../dashboard/graphs/graphs.component.spec.ts | 23 + .../dashboard/graphs/graphs.component.ts | 37 ++ .../dashboard/tables/tables.component.html | 1 + .../dashboard/tables/tables.component.scss | 0 .../dashboard/tables/tables.component.spec.ts | 23 + .../dashboard/tables/tables.component.ts | 15 + src/app/shared/footer/footer.component.html | 4 + src/app/shared/footer/footer.component.scss | 3 + .../shared/footer/footer.component.spec.ts | 23 + src/app/shared/footer/footer.component.ts | 15 + src/app/shared/header/header.component.html | 34 ++ src/app/shared/header/header.component.scss | 3 + .../shared/header/header.component.spec.ts | 23 + src/app/shared/header/header.component.ts | 15 + src/app/shared/shared.module.ts | 40 ++ src/app/shared/sidebar/sidebar.component.html | 22 + src/app/shared/sidebar/sidebar.component.scss | 16 + .../shared/sidebar/sidebar.component.spec.ts | 23 + src/app/shared/sidebar/sidebar.component.ts | 15 + src/index.html | 5 +- src/styles.scss | 3 + 42 files changed, 759 insertions(+), 488 deletions(-) create mode 100644 src/app/creative-team/creative-team.component.html create mode 100644 src/app/creative-team/creative-team.component.scss create mode 100644 src/app/creative-team/creative-team.component.spec.ts create mode 100644 src/app/creative-team/creative-team.component.ts create mode 100644 src/app/creative-team/creative-team.module.ts create mode 100644 src/app/creative-team/dashboard/cards/cards.component.html create mode 100644 src/app/creative-team/dashboard/cards/cards.component.scss create mode 100644 src/app/creative-team/dashboard/cards/cards.component.spec.ts create mode 100644 src/app/creative-team/dashboard/cards/cards.component.ts create mode 100644 src/app/creative-team/dashboard/dashboard.component.html create mode 100644 src/app/creative-team/dashboard/dashboard.component.scss create mode 100644 src/app/creative-team/dashboard/dashboard.component.spec.ts create mode 100644 src/app/creative-team/dashboard/dashboard.component.ts create mode 100644 src/app/creative-team/dashboard/dashboard.module.ts create mode 100644 src/app/creative-team/dashboard/graphs/graphs.component.html create mode 100644 src/app/creative-team/dashboard/graphs/graphs.component.scss create mode 100644 src/app/creative-team/dashboard/graphs/graphs.component.spec.ts create mode 100644 src/app/creative-team/dashboard/graphs/graphs.component.ts create mode 100644 src/app/creative-team/dashboard/tables/tables.component.html create mode 100644 src/app/creative-team/dashboard/tables/tables.component.scss create mode 100644 src/app/creative-team/dashboard/tables/tables.component.spec.ts create mode 100644 src/app/creative-team/dashboard/tables/tables.component.ts create mode 100644 src/app/shared/footer/footer.component.html create mode 100644 src/app/shared/footer/footer.component.scss create mode 100644 src/app/shared/footer/footer.component.spec.ts create mode 100644 src/app/shared/footer/footer.component.ts create mode 100644 src/app/shared/header/header.component.html create mode 100644 src/app/shared/header/header.component.scss create mode 100644 src/app/shared/header/header.component.spec.ts create mode 100644 src/app/shared/header/header.component.ts create mode 100644 src/app/shared/shared.module.ts create mode 100644 src/app/shared/sidebar/sidebar.component.html create mode 100644 src/app/shared/sidebar/sidebar.component.scss create mode 100644 src/app/shared/sidebar/sidebar.component.spec.ts create mode 100644 src/app/shared/sidebar/sidebar.component.ts diff --git a/angular.json b/angular.json index aa1bee1..b6e2e3c 100644 --- a/angular.json +++ b/angular.json @@ -28,6 +28,7 @@ "src/assets" ], "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "src/styles.scss" ], "scripts": [] @@ -96,6 +97,7 @@ "src/assets" ], "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "src/styles.scss" ], "scripts": [] @@ -103,5 +105,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/package-lock.json b/package-lock.json index 14b7d7e..9e2ff4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,17 @@ "version": "0.0.0", "dependencies": { "@angular/animations": "^14.0.0", + "@angular/cdk": "^14.1.0", "@angular/common": "^14.0.0", "@angular/compiler": "^14.0.0", "@angular/core": "^14.0.0", + "@angular/flex-layout": "^14.0.0-beta.40", "@angular/forms": "^14.0.0", + "@angular/material": "^14.1.0", "@angular/platform-browser": "^14.0.0", "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", + "highcharts": "^10.2.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -378,6 +382,28 @@ "@angular/core": "14.1.0" } }, + "node_modules/@angular/cdk": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", + "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cdk/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, "node_modules/@angular/cli": { "version": "14.0.7", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", @@ -576,6 +602,21 @@ "zone.js": "~0.11.4" } }, + "node_modules/@angular/flex-layout": { + "version": "14.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", + "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^14.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/platform-browser": "^14.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/forms": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", @@ -593,6 +634,23 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/material": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", + "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^14.0.0 || ^15.0.0", + "@angular/cdk": "14.1.0", + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "@angular/forms": "^14.0.0 || ^15.0.0", + "@angular/platform-browser": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/platform-browser": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", @@ -6291,6 +6349,11 @@ "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, + "node_modules/highcharts": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz", + "integrity": "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==" + }, "node_modules/hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -12452,6 +12515,23 @@ "tslib": "^2.3.0" } }, + "@angular/cdk": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.1.0.tgz", + "integrity": "sha512-EOQZmlTgj5Tc6/s50kEQUYKWH0S748rzbymBYkvyJs864lP9A8khz83IINmm+PD2sMADKtBETD3aEa5yQRhVAA==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + } + } + }, "@angular/cli": { "version": "14.0.7", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", @@ -12580,6 +12660,14 @@ "tslib": "^2.3.0" } }, + "@angular/flex-layout": { + "version": "14.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.40.tgz", + "integrity": "sha512-lYi2BKovNk5u2wmj/AMIMqfUzCBEt99Wu/Gfa+1mUIlw3voKCmIsV2XYBhX4adRdD+dRagY3Opger43JR7PXEw==", + "requires": { + "tslib": "^2.3.0" + } + }, "@angular/forms": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.1.0.tgz", @@ -12588,6 +12676,14 @@ "tslib": "^2.3.0" } }, + "@angular/material": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.1.0.tgz", + "integrity": "sha512-0UXfMqP5+Nzd6gbLplQpUX3E0rRRwhVEnAo8Z1hllGdJIY0meunMnTZCWsvYQ7SU/W+VbqnmtBmg5EOfYsjpiQ==", + "requires": { + "tslib": "^2.3.0" + } + }, "@angular/platform-browser": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.1.0.tgz", @@ -16689,6 +16785,11 @@ "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", "dev": true }, + "highcharts": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz", + "integrity": "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==" + }, "hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 0297262..9967792 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,7 +1,16 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import {CreativeTeamComponent} from "./creative-team/creative-team.component"; +import {DashboardComponent} from "./creative-team/dashboard/dashboard.component"; -const routes: Routes = []; +const routes: Routes = [{ + path:'', + component:CreativeTeamComponent, + children:[{ + path:'', + component:DashboardComponent + }] +}]; @NgModule({ imports: [RouterModule.forRoot(routes)], diff --git a/src/app/app.component.html b/src/app/app.component.html index e11ca59..0680b43 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,484 +1 @@ - - - - - - - - - - - - - - -
- - -
- - - Rocket Ship - - - - - - - - - - {{ title }} app is running! - - - Rocket Ship Smoke - - - -
- - -

Resources

-

Here are some links to help you get started:

- - - - -

Next Steps

-

What do you want to do next with your app?

- - - -
- - - - - - - - - - - -
- - -
-
ng generate component xyz
-
ng add @angular/material
-
ng add @angular/pwa
-
ng add _____
-
ng test
-
ng build
-
- - - - - - - - - Gray Clouds Background - - - -
- - - - - - - - - diff --git a/src/app/app.module.ts b/src/app/app.module.ts index b1c6c96..603449f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,14 +3,17 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; - +import {CreativeTeamModule} from "./creative-team/creative-team.module"; +import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; @NgModule({ declarations: [ - AppComponent + AppComponent, ], imports: [ BrowserModule, - AppRoutingModule + AppRoutingModule, + BrowserAnimationsModule, + CreativeTeamModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/creative-team/creative-team.component.html b/src/app/creative-team/creative-team.component.html new file mode 100644 index 0000000..26833e8 --- /dev/null +++ b/src/app/creative-team/creative-team.component.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/app/creative-team/creative-team.component.scss b/src/app/creative-team/creative-team.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/creative-team/creative-team.component.spec.ts b/src/app/creative-team/creative-team.component.spec.ts new file mode 100644 index 0000000..c50e79b --- /dev/null +++ b/src/app/creative-team/creative-team.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreativeTeamComponent } from './creative-team.component'; + +describe('CreativeTeamComponent', () => { + let component: CreativeTeamComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CreativeTeamComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CreativeTeamComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/creative-team.component.ts b/src/app/creative-team/creative-team.component.ts new file mode 100644 index 0000000..097563e --- /dev/null +++ b/src/app/creative-team/creative-team.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-creative-team', + templateUrl: './creative-team.component.html', + styleUrls: ['./creative-team.component.scss'] +}) +export class CreativeTeamComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/creative-team.module.ts b/src/app/creative-team/creative-team.module.ts new file mode 100644 index 0000000..3d9b15c --- /dev/null +++ b/src/app/creative-team/creative-team.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {CreativeTeamComponent} from "./creative-team.component"; +import {DashboardModule} from "./dashboard/dashboard.module"; +import {MatSidenavModule} from "@angular/material/sidenav"; +import {SharedModule} from "../shared/shared.module"; +import {RouterModule} from "@angular/router"; +import {MatDividerModule} from "@angular/material/divider"; +import {FlexLayoutModule} from "@angular/flex-layout"; +import {MatCardModule} from "@angular/material/card"; + + +@NgModule({ + declarations: [ + CreativeTeamComponent + ], + imports: [ + CommonModule, + RouterModule, + DashboardModule, + MatSidenavModule, + MatDividerModule, + FlexLayoutModule, + SharedModule, + MatCardModule + + ] +}) +export class CreativeTeamModule { } diff --git a/src/app/creative-team/dashboard/cards/cards.component.html b/src/app/creative-team/dashboard/cards/cards.component.html new file mode 100644 index 0000000..4bf9496 --- /dev/null +++ b/src/app/creative-team/dashboard/cards/cards.component.html @@ -0,0 +1,22 @@ +
+ + +
+ {{card.icon}} +
+
+

{{card.header}}

+ {{card.char}} +
+
+ + +
+ {{card.foot}} +

{{card.text}}

+
+
+
+
+ + diff --git a/src/app/creative-team/dashboard/cards/cards.component.scss b/src/app/creative-team/dashboard/cards/cards.component.scss new file mode 100644 index 0000000..9c985b6 --- /dev/null +++ b/src/app/creative-team/dashboard/cards/cards.component.scss @@ -0,0 +1,5 @@ +mat-card { + margin: 20px; + border-radius: 4px; + background-color: gray; +} diff --git a/src/app/creative-team/dashboard/cards/cards.component.spec.ts b/src/app/creative-team/dashboard/cards/cards.component.spec.ts new file mode 100644 index 0000000..a908b43 --- /dev/null +++ b/src/app/creative-team/dashboard/cards/cards.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardsComponent } from './cards.component'; + +describe('CardsComponent', () => { + let component: CardsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CardsComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CardsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/dashboard/cards/cards.component.ts b/src/app/creative-team/dashboard/cards/cards.component.ts new file mode 100644 index 0000000..39113c6 --- /dev/null +++ b/src/app/creative-team/dashboard/cards/cards.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dashboard-cards', + templateUrl: './cards.component.html', + styleUrls: ['./cards.component.scss'] +}) +export class CardsComponent implements OnInit { +cards=[ + { + icon: 'content_copy', + header: 'Used Space', + char:'49/50 GB', + foot: 'warning', + text:'Get More Space...' + }, + { + icon: 'content_copy', + header: 'Used Space', + char:'49/50 GB', + foot: 'warning', + text:'Get More Space...' + }, + { + icon: 'content_copy', + header: 'Used Space', + char:'49/50 GB', + foot: 'warning', + text:'Get More Space...' + }, + { + icon: 'content_copy', + header: 'Used Space', + char:'49/50 GB', + foot: 'warning', + text:'Get More Space...' + } +] + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/dashboard/dashboard.component.html b/src/app/creative-team/dashboard/dashboard.component.html new file mode 100644 index 0000000..4e190ec --- /dev/null +++ b/src/app/creative-team/dashboard/dashboard.component.html @@ -0,0 +1,24 @@ +
+
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + diff --git a/src/app/creative-team/dashboard/dashboard.component.scss b/src/app/creative-team/dashboard/dashboard.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/creative-team/dashboard/dashboard.component.spec.ts b/src/app/creative-team/dashboard/dashboard.component.spec.ts new file mode 100644 index 0000000..6e4dcd8 --- /dev/null +++ b/src/app/creative-team/dashboard/dashboard.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardComponent } from './dashboard.component'; + +describe('DashboardComponent', () => { + let component: DashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashboardComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(DashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/dashboard/dashboard.component.ts b/src/app/creative-team/dashboard/dashboard.component.ts new file mode 100644 index 0000000..843c80f --- /dev/null +++ b/src/app/creative-team/dashboard/dashboard.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrls: ['./dashboard.component.scss'] +}) +export class DashboardComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/dashboard/dashboard.module.ts b/src/app/creative-team/dashboard/dashboard.module.ts new file mode 100644 index 0000000..aef42a1 --- /dev/null +++ b/src/app/creative-team/dashboard/dashboard.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {CardsComponent} from "./cards/cards.component"; +import {GraphsComponent} from "./graphs/graphs.component"; +import {TablesComponent} from "./tables/tables.component"; +import {DashboardComponent} from "./dashboard.component"; +import {MatSidenavModule} from "@angular/material/sidenav"; +import {AppRoutingModule} from "../../app-routing.module"; +import {SharedModule} from "../../shared/shared.module"; +import {MatDividerModule} from "@angular/material/divider"; +import {FlexModule} from "@angular/flex-layout"; +import {MatCardModule} from "@angular/material/card"; +import {MatIconModule} from "@angular/material/icon"; + + + +@NgModule({ + declarations: [ + DashboardComponent, + CardsComponent, + GraphsComponent, + TablesComponent + ], + exports: [ + ], + imports: [ + CommonModule, + MatSidenavModule, + AppRoutingModule, + SharedModule, + MatDividerModule, + FlexModule, + MatCardModule, + MatIconModule + ] +}) +export class DashboardModule { } diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.html b/src/app/creative-team/dashboard/graphs/graphs.component.html new file mode 100644 index 0000000..b915e4d --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graphs.component.html @@ -0,0 +1,20 @@ +
+ + +
+ {{graph.graph}} +
+
+ {{graph.updates}} +

{{graph.info}}

+
+
+ + +
+ {{graph.icon}} +

{{graph.foot}}

+
+
+
+
diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.scss b/src/app/creative-team/dashboard/graphs/graphs.component.scss new file mode 100644 index 0000000..c5b22df --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graphs.component.scss @@ -0,0 +1,5 @@ +mat-card { + margin: 20px; + border-radius: 4px; + background-color: blanchedalmond; +} diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.spec.ts b/src/app/creative-team/dashboard/graphs/graphs.component.spec.ts new file mode 100644 index 0000000..121359a --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graphs.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GraphsComponent } from './graphs.component'; + +describe('GraphsComponent', () => { + let component: GraphsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GraphsComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(GraphsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.ts b/src/app/creative-team/dashboard/graphs/graphs.component.ts new file mode 100644 index 0000000..c87f212 --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graphs.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dashboard-graphs', + templateUrl: './graphs.component.html', + styleUrls: ['./graphs.component.scss'] +}) +export class GraphsComponent implements OnInit { +graphs=[ + { + graph: 'graphs', + updates: 'Daily Sales', + info:'55%', + icon:'update', + foot: 'update 4 minutes ago', + }, + { + graph: 'graphs', + updates: 'Daily Sales', + info:'55%', + icon:'update', + foot: 'update 4 minutes ago', + }, + { + graph: 'graphs', + updates: 'Daily Sales', + info:'55%', + icon:'update', + foot: 'update 4 minutes ago', + } +] + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/dashboard/tables/tables.component.html b/src/app/creative-team/dashboard/tables/tables.component.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/app/creative-team/dashboard/tables/tables.component.html @@ -0,0 +1 @@ + diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/creative-team/dashboard/tables/tables.component.spec.ts b/src/app/creative-team/dashboard/tables/tables.component.spec.ts new file mode 100644 index 0000000..2647b03 --- /dev/null +++ b/src/app/creative-team/dashboard/tables/tables.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TablesComponent } from './tables.component'; + +describe('TablesComponent', () => { + let component: TablesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TablesComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TablesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/dashboard/tables/tables.component.ts b/src/app/creative-team/dashboard/tables/tables.component.ts new file mode 100644 index 0000000..c2bbd3d --- /dev/null +++ b/src/app/creative-team/dashboard/tables/tables.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dashboard-tables', + templateUrl: './tables.component.html', + styleUrls: ['./tables.component.scss'] +}) +export class TablesComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html new file mode 100644 index 0000000..ce9ca3f --- /dev/null +++ b/src/app/shared/footer/footer.component.html @@ -0,0 +1,4 @@ + +
+ ©: All rights reserved 2019 +
diff --git a/src/app/shared/footer/footer.component.scss b/src/app/shared/footer/footer.component.scss new file mode 100644 index 0000000..08320a5 --- /dev/null +++ b/src/app/shared/footer/footer.component.scss @@ -0,0 +1,3 @@ +footer { + padding: 20px; +} diff --git a/src/app/shared/footer/footer.component.spec.ts b/src/app/shared/footer/footer.component.spec.ts new file mode 100644 index 0000000..953b22c --- /dev/null +++ b/src/app/shared/footer/footer.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ FooterComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(FooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/footer/footer.component.ts b/src/app/shared/footer/footer.component.ts new file mode 100644 index 0000000..c7a7ec5 --- /dev/null +++ b/src/app/shared/footer/footer.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html new file mode 100644 index 0000000..38797dc --- /dev/null +++ b/src/app/shared/header/header.component.html @@ -0,0 +1,34 @@ + + + Dashboard +
+
+
+ +
+ +
+
+
    +
  • + +
  • +
  • + notifications + + +
  • +
  • + +
  • +
+
+
+
+
diff --git a/src/app/shared/header/header.component.scss b/src/app/shared/header/header.component.scss new file mode 100644 index 0000000..2f750cb --- /dev/null +++ b/src/app/shared/header/header.component.scss @@ -0,0 +1,3 @@ +ul li { + list-style: none; +} diff --git a/src/app/shared/header/header.component.spec.ts b/src/app/shared/header/header.component.spec.ts new file mode 100644 index 0000000..1fd30b4 --- /dev/null +++ b/src/app/shared/header/header.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeaderComponent } from './header.component'; + +describe('HeaderComponent', () => { + let component: HeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HeaderComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(HeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/header/header.component.ts b/src/app/shared/header/header.component.ts new file mode 100644 index 0000000..7ab4cf7 --- /dev/null +++ b/src/app/shared/header/header.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'] +}) +export class HeaderComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts new file mode 100644 index 0000000..8d9d088 --- /dev/null +++ b/src/app/shared/shared.module.ts @@ -0,0 +1,40 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {FooterComponent} from "./footer/footer.component"; +import {SidebarComponent} from "./sidebar/sidebar.component"; +import {HeaderComponent} from "./header/header.component"; +import {MatDividerModule} from "@angular/material/divider"; +import {MatIconModule} from "@angular/material/icon"; +import {MatListModule} from "@angular/material/list"; +import {RouterModule} from "@angular/router"; +import {MatToolbarModule} from "@angular/material/toolbar"; +import {MatButtonModule} from "@angular/material/button"; +import {MatBadgeModule} from "@angular/material/badge"; +import {FlexModule} from "@angular/flex-layout"; + + + +@NgModule({ + declarations: [ + FooterComponent, + SidebarComponent, + HeaderComponent + ], + exports: [ + FooterComponent, + HeaderComponent, + SidebarComponent + ], + imports: [ + CommonModule, + MatDividerModule, + MatIconModule, + MatListModule, + RouterModule, + MatToolbarModule, + MatButtonModule, + MatBadgeModule, + FlexModule, + ] +}) +export class SharedModule { } diff --git a/src/app/shared/sidebar/sidebar.component.html b/src/app/shared/sidebar/sidebar.component.html new file mode 100644 index 0000000..edcbc6c --- /dev/null +++ b/src/app/shared/sidebar/sidebar.component.html @@ -0,0 +1,22 @@ + +
+
+

Karma Tenzin

+

tenzing@gmail.com

+
+ Profile Dog +
+ +

Pages

+ Dashboard + Posts + Article + +

Tools

+ + import_contacts Contacts + + + contact_phone Leads + +
diff --git a/src/app/shared/sidebar/sidebar.component.scss b/src/app/shared/sidebar/sidebar.component.scss new file mode 100644 index 0000000..1af4d1a --- /dev/null +++ b/src/app/shared/sidebar/sidebar.component.scss @@ -0,0 +1,16 @@ +:host { + .mat-icon{ + vertical-align: middle; + margin-right: 20px; + } +} +.profile-card { + text-align: center; + padding: 20px; + img { + width: 200px; + height: 200px; + object-fit: cover; + border-radius: 50%; + } +} diff --git a/src/app/shared/sidebar/sidebar.component.spec.ts b/src/app/shared/sidebar/sidebar.component.spec.ts new file mode 100644 index 0000000..05de8d1 --- /dev/null +++ b/src/app/shared/sidebar/sidebar.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SidebarComponent } from './sidebar.component'; + +describe('SidebarComponent', () => { + let component: SidebarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SidebarComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SidebarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/sidebar/sidebar.component.ts b/src/app/shared/sidebar/sidebar.component.ts new file mode 100644 index 0000000..f841d58 --- /dev/null +++ b/src/app/shared/sidebar/sidebar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-sidebar', + templateUrl: './sidebar.component.html', + styleUrls: ['./sidebar.component.scss'] +}) +export class SidebarComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/index.html b/src/index.html index 508253f..aeac9d1 100644 --- a/src/index.html +++ b/src/index.html @@ -6,8 +6,11 @@ + + + - + diff --git a/src/styles.scss b/src/styles.scss index 90d4ee0..7e7239a 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1 +1,4 @@ /* You can add global styles to this file, and also import other style files */ + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } From fe02d08301077cddb61c254bdf3772a3870c0dd5 Mon Sep 17 00:00:00 2001 From: Karma Tenzin Date: Sun, 24 Jul 2022 17:55:26 +0600 Subject: [PATCH 2/7] improved layout and added charts --- package-lock.json | 22 ++++ package.json | 3 +- .../creative-team.component.html | 3 +- .../creative-team.component.scss | 6 ++ src/app/creative-team/creative-team.module.ts | 2 +- .../dashboard/cards/cards.component.html | 6 +- .../dashboard/cards/cards.component.scss | 5 + .../dashboard/cards/cards.component.ts | 18 ++-- .../dashboard/dashboard.component.html | 29 +++--- .../dashboard/dashboard.component.scss | 3 + .../dashboard/dashboard.module.ts | 15 ++- .../graph-icon/graph-icon.component.html | 6 ++ .../graph-icon/graph-icon.component.scss | 0 .../graph-icon/graph-icon.component.spec.ts | 23 +++++ .../graphs/graph-icon/graph-icon.component.ts | 40 ++++++++ .../dashboard/graphs/graphs.component.html | 4 +- .../dashboard/graphs/graphs.component.scss | 4 + .../dashboard/graphs/graphs.component.ts | 3 - .../dashboard/tables/tables.component.html | 94 ++++++++++++++++++ .../dashboard/tables/tables.component.scss | 11 ++ .../dashboard/tables/tables.component.ts | 22 +++- src/app/shared/footer/footer.component.html | 11 +- src/app/shared/footer/footer.component.scss | 8 +- src/app/shared/shared.module.ts | 24 +++-- src/app/shared/sidebar/sidebar.component.html | 40 ++++---- src/app/shared/sidebar/sidebar.component.scss | 22 ++-- src/app/shared/sidebar/sidebar.component.ts | 1 - src/assets/images/angular-logo.png | Bin 0 -> 81993 bytes yarn.lock | 15 ++- 29 files changed, 353 insertions(+), 87 deletions(-) create mode 100644 src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html create mode 100644 src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.scss create mode 100644 src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.spec.ts create mode 100644 src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.ts create mode 100644 src/assets/images/angular-logo.png diff --git a/package-lock.json b/package-lock.json index 9e2ff4f..679cc15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", "highcharts": "^10.2.0", + "highcharts-angular": "^3.0.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -6354,6 +6355,19 @@ "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz", "integrity": "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==" }, + "node_modules/highcharts-angular": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-3.0.0.tgz", + "integrity": "sha512-v2jMlvmzmLqqKVQdsARBewmYaQOL44lmioF9WEseuIF2KyTeZIeUtYbrEqG9uz+/dl0bsDZL6WtUrgCa42D3DQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=9.0.0", + "@angular/core": ">=9.0.0", + "highcharts": ">=6.0.0" + } + }, "node_modules/hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -16790,6 +16804,14 @@ "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz", "integrity": "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==" }, + "highcharts-angular": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-3.0.0.tgz", + "integrity": "sha512-v2jMlvmzmLqqKVQdsARBewmYaQOL44lmioF9WEseuIF2KyTeZIeUtYbrEqG9uz+/dl0bsDZL6WtUrgCa42D3DQ==", + "requires": { + "tslib": "^2.0.0" + } + }, "hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", diff --git a/package.json b/package.json index fad2ff6..8205dd1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@angular/platform-browser-dynamic": "^14.0.0", "@angular/router": "^14.0.0", "highcharts": "^10.2.0", + "highcharts-angular": "^3.0.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -39,4 +40,4 @@ "karma-jasmine-html-reporter": "~1.7.0", "typescript": "~4.7.2" } -} \ No newline at end of file +} diff --git a/src/app/creative-team/creative-team.component.html b/src/app/creative-team/creative-team.component.html index 26833e8..ff67c61 100644 --- a/src/app/creative-team/creative-team.component.html +++ b/src/app/creative-team/creative-team.component.html @@ -5,6 +5,7 @@ + - + diff --git a/src/app/creative-team/creative-team.component.scss b/src/app/creative-team/creative-team.component.scss index e69de29..e2b2d30 100644 --- a/src/app/creative-team/creative-team.component.scss +++ b/src/app/creative-team/creative-team.component.scss @@ -0,0 +1,6 @@ +mat-drawer-content{ + position: relative; + float: right; + width: calc(100% - 260px); + transition: .33s,cubic-bezier(.685,.0473,.346,1); +} diff --git a/src/app/creative-team/creative-team.module.ts b/src/app/creative-team/creative-team.module.ts index 3d9b15c..2c434e2 100644 --- a/src/app/creative-team/creative-team.module.ts +++ b/src/app/creative-team/creative-team.module.ts @@ -1,13 +1,13 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import {CreativeTeamComponent} from "./creative-team.component"; -import {DashboardModule} from "./dashboard/dashboard.module"; import {MatSidenavModule} from "@angular/material/sidenav"; import {SharedModule} from "../shared/shared.module"; import {RouterModule} from "@angular/router"; import {MatDividerModule} from "@angular/material/divider"; import {FlexLayoutModule} from "@angular/flex-layout"; import {MatCardModule} from "@angular/material/card"; +import {DashboardModule} from "./dashboard/dashboard.module"; @NgModule({ diff --git a/src/app/creative-team/dashboard/cards/cards.component.html b/src/app/creative-team/dashboard/cards/cards.component.html index 4bf9496..1c055ce 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.html +++ b/src/app/creative-team/dashboard/cards/cards.component.html @@ -1,9 +1,9 @@
- + -
+ {{card.icon}} -
+

{{card.header}}

{{card.char}} diff --git a/src/app/creative-team/dashboard/cards/cards.component.scss b/src/app/creative-team/dashboard/cards/cards.component.scss index 9c985b6..7aa1437 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.scss +++ b/src/app/creative-team/dashboard/cards/cards.component.scss @@ -3,3 +3,8 @@ mat-card { border-radius: 4px; background-color: gray; } +.header{ + background-color: azure; + width: 60px; + height: 60px; +} diff --git a/src/app/creative-team/dashboard/cards/cards.component.ts b/src/app/creative-team/dashboard/cards/cards.component.ts index 39113c6..395177c 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.ts +++ b/src/app/creative-team/dashboard/cards/cards.component.ts @@ -15,24 +15,24 @@ cards=[ text:'Get More Space...' }, { - icon: 'content_copy', - header: 'Used Space', - char:'49/50 GB', - foot: 'warning', - text:'Get More Space...' + icon: 'store', + header: 'Revenue', + char:'$34,245', + foot: 'date_range', + text:'Last 24 Hours' }, { - icon: 'content_copy', + icon: 'info_outline', header: 'Used Space', char:'49/50 GB', - foot: 'warning', + foot: 'local_offer', text:'Get More Space...' }, { - icon: 'content_copy', + icon: 'facebook', header: 'Used Space', char:'49/50 GB', - foot: 'warning', + foot: 'update', text:'Get More Space...' } ] diff --git a/src/app/creative-team/dashboard/dashboard.component.html b/src/app/creative-team/dashboard/dashboard.component.html index 4e190ec..9bdad88 100644 --- a/src/app/creative-team/dashboard/dashboard.component.html +++ b/src/app/creative-team/dashboard/dashboard.component.html @@ -1,23 +1,18 @@ -
-
- -
+
+
+ +

- -
+ +
- - - - - - - - - - - +
+ +
+ +
+
diff --git a/src/app/creative-team/dashboard/dashboard.component.scss b/src/app/creative-team/dashboard/dashboard.component.scss index e69de29..122a839 100644 --- a/src/app/creative-team/dashboard/dashboard.component.scss +++ b/src/app/creative-team/dashboard/dashboard.component.scss @@ -0,0 +1,3 @@ +.main{ + margin: 20px; +} diff --git a/src/app/creative-team/dashboard/dashboard.module.ts b/src/app/creative-team/dashboard/dashboard.module.ts index aef42a1..e8fd6a2 100644 --- a/src/app/creative-team/dashboard/dashboard.module.ts +++ b/src/app/creative-team/dashboard/dashboard.module.ts @@ -11,6 +11,11 @@ import {MatDividerModule} from "@angular/material/divider"; import {FlexModule} from "@angular/flex-layout"; import {MatCardModule} from "@angular/material/card"; import {MatIconModule} from "@angular/material/icon"; +import {MatTabsModule} from "@angular/material/tabs"; +import {MatTableModule} from "@angular/material/table"; +import {MatButtonToggleModule} from "@angular/material/button-toggle"; +import { GraphIconComponent } from './graphs/graph-icon/graph-icon.component'; +import { HighchartsChartModule } from 'highcharts-angular'; @@ -19,7 +24,9 @@ import {MatIconModule} from "@angular/material/icon"; DashboardComponent, CardsComponent, GraphsComponent, - TablesComponent + TablesComponent, + GraphIconComponent, + GraphIconComponent ], exports: [ ], @@ -31,7 +38,11 @@ import {MatIconModule} from "@angular/material/icon"; MatDividerModule, FlexModule, MatCardModule, - MatIconModule + MatIconModule, + MatTabsModule, + MatTableModule, + MatButtonToggleModule, + HighchartsChartModule ] }) export class DashboardModule { } diff --git a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html new file mode 100644 index 0000000..052084f --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html @@ -0,0 +1,6 @@ + diff --git a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.scss b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.spec.ts b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.spec.ts new file mode 100644 index 0000000..78220d2 --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GraphIconComponent } from './graph-icon.component'; + +describe('GraphIconComponent', () => { + let component: GraphIconComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GraphIconComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(GraphIconComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.ts b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.ts new file mode 100644 index 0000000..ed8a273 --- /dev/null +++ b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit } from '@angular/core'; +import * as Highcharts from 'highcharts'; +@Component({ + selector: 'app-graph-icon', + templateUrl: './graph-icon.component.html', + styleUrls: ['./graph-icon.component.scss'] +}) +export class GraphIconComponent implements OnInit { + Highcharts = Highcharts; + chartOptions ={}; + constructor() { } + + ngOnInit(): void { + this.chartOptions = { + xAxis: { + tickInterval: 0.1, + type: 'logarithmic', + accessibility: { + rangeDescription: 'Range: 1 to 10' + } + }, + yAxis: { + type: 'logarithmic', + minorTickInterval: 0.1, + accessibility: { + rangeDescription: 'Range: 0.1 to 1000' + } + }, + tooltip: { + headerFormat: '{series.name}', + pointFormat: 'x = {point.x}, y = {point.y}' + }, + series: [{ + data: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512], + pointStart: 1 + }] + } + } + +} diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.html b/src/app/creative-team/dashboard/graphs/graphs.component.html index b915e4d..51aaa06 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.html +++ b/src/app/creative-team/dashboard/graphs/graphs.component.html @@ -1,8 +1,8 @@
- +
- {{graph.graph}} +
{{graph.updates}} diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.scss b/src/app/creative-team/dashboard/graphs/graphs.component.scss index c5b22df..f2a9da6 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.scss +++ b/src/app/creative-team/dashboard/graphs/graphs.component.scss @@ -3,3 +3,7 @@ mat-card { border-radius: 4px; background-color: blanchedalmond; } +.header{ + width: 100%; + height: 100%; +} diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.ts b/src/app/creative-team/dashboard/graphs/graphs.component.ts index c87f212..3370b30 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.ts +++ b/src/app/creative-team/dashboard/graphs/graphs.component.ts @@ -8,21 +8,18 @@ import { Component, OnInit } from '@angular/core'; export class GraphsComponent implements OnInit { graphs=[ { - graph: 'graphs', updates: 'Daily Sales', info:'55%', icon:'update', foot: 'update 4 minutes ago', }, { - graph: 'graphs', updates: 'Daily Sales', info:'55%', icon:'update', foot: 'update 4 minutes ago', }, { - graph: 'graphs', updates: 'Daily Sales', info:'55%', icon:'update', diff --git a/src/app/creative-team/dashboard/tables/tables.component.html b/src/app/creative-team/dashboard/tables/tables.component.html index 8b13789..3c8f431 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.html +++ b/src/app/creative-team/dashboard/tables/tables.component.html @@ -1 +1,95 @@ +
+ + + + Tasks: + + + bug_report + BoldI + + + code + ItalickI + + + cloud + UnderlineI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
+
+
+ + + + + + +

Employees Stats

+

New employees on 15th September, 2016

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
+
+
+
diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss index e69de29..193d360 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.scss +++ b/src/app/creative-team/dashboard/tables/tables.component.scss @@ -0,0 +1,11 @@ +mat-card { + margin: 20px; + border-radius: 4px; + background-color: gray; +} +table{ + width: 100%; +} +.header{ + background-color: azure; +} diff --git a/src/app/creative-team/dashboard/tables/tables.component.ts b/src/app/creative-team/dashboard/tables/tables.component.ts index c2bbd3d..a5d7d8c 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.ts +++ b/src/app/creative-team/dashboard/tables/tables.component.ts @@ -1,4 +1,23 @@ import { Component, OnInit } from '@angular/core'; +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; @Component({ selector: 'app-dashboard-tables', @@ -6,7 +25,8 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./tables.component.scss'] }) export class TablesComponent implements OnInit { - + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = ELEMENT_DATA; constructor() { } ngOnInit(): void { diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index ce9ca3f..4c4ac7f 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -1,4 +1,13 @@
- ©: All rights reserved 2019 +
+
    +
  • CREATIVE TIM
  • +
  • ABOUT US
  • +
  • BLOG
  • +
  • LICENSES
  • +
+

©: All rights reserved 2019

+
+
diff --git a/src/app/shared/footer/footer.component.scss b/src/app/shared/footer/footer.component.scss index 08320a5..5abaeaa 100644 --- a/src/app/shared/footer/footer.component.scss +++ b/src/app/shared/footer/footer.component.scss @@ -1,3 +1,9 @@ footer { - padding: 20px; + padding-top: 10px; +} +ul{ + list-style:none; +} +p{ + float: right; } diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 8d9d088..315fcff 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -11,6 +11,7 @@ import {MatToolbarModule} from "@angular/material/toolbar"; import {MatButtonModule} from "@angular/material/button"; import {MatBadgeModule} from "@angular/material/badge"; import {FlexModule} from "@angular/flex-layout"; +import {MatButtonToggleModule} from "@angular/material/button-toggle"; @@ -25,16 +26,17 @@ import {FlexModule} from "@angular/flex-layout"; HeaderComponent, SidebarComponent ], - imports: [ - CommonModule, - MatDividerModule, - MatIconModule, - MatListModule, - RouterModule, - MatToolbarModule, - MatButtonModule, - MatBadgeModule, - FlexModule, - ] + imports: [ + CommonModule, + MatDividerModule, + MatIconModule, + MatListModule, + RouterModule, + MatToolbarModule, + MatButtonModule, + MatBadgeModule, + FlexModule, + MatButtonToggleModule, + ] }) export class SharedModule { } diff --git a/src/app/shared/sidebar/sidebar.component.html b/src/app/shared/sidebar/sidebar.component.html index edcbc6c..ecac5df 100644 --- a/src/app/shared/sidebar/sidebar.component.html +++ b/src/app/shared/sidebar/sidebar.component.html @@ -1,22 +1,20 @@ - -
- + diff --git a/src/app/shared/sidebar/sidebar.component.scss b/src/app/shared/sidebar/sidebar.component.scss index 1af4d1a..7dbdcc3 100644 --- a/src/app/shared/sidebar/sidebar.component.scss +++ b/src/app/shared/sidebar/sidebar.component.scss @@ -3,14 +3,20 @@ vertical-align: middle; margin-right: 20px; } + .sidebar{ + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 2; + width: 260px; + background: #fff; + box-shadow: 0 16px 38px -12px rgba(0,0,0,.56),0 4px 25px 0 rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.2); + } } -.profile-card { - text-align: center; - padding: 20px; img { - width: 200px; - height: 200px; - object-fit: cover; - border-radius: 50%; + width: 50px; + height: 50px; + border-radius: 10%; + padding-right: 10px; } -} diff --git a/src/app/shared/sidebar/sidebar.component.ts b/src/app/shared/sidebar/sidebar.component.ts index f841d58..951961a 100644 --- a/src/app/shared/sidebar/sidebar.component.ts +++ b/src/app/shared/sidebar/sidebar.component.ts @@ -6,7 +6,6 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./sidebar.component.scss'] }) export class SidebarComponent implements OnInit { - constructor() { } ngOnInit(): void { diff --git a/src/assets/images/angular-logo.png b/src/assets/images/angular-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..353a25fb42eb1b7cdf6a508dfd44027d3d61a5a1 GIT binary patch literal 81993 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 k=70{^C%FmHYymbpmK%!$c3yjG7yym&a6jZ$=9.0.0", "@angular/common@14.1.0": "integrity" "sha512-leethDtLbA3qySaOEBUto602DF0qH1maK9u2zHncrUFOpnHAYUEd7N9MFMdIYASurTnwOSglEoIDCML94qzImQ==" "resolved" "https://registry.npmjs.org/@angular/common/-/common-14.1.0.tgz" "version" "14.1.0" @@ -209,7 +209,7 @@ dependencies: "tslib" "^2.3.0" -"@angular/core@^14.0.0", "@angular/core@^14.0.0 || ^15.0.0", "@angular/core@14.1.0": +"@angular/core@^14.0.0", "@angular/core@^14.0.0 || ^15.0.0", "@angular/core@>=9.0.0", "@angular/core@14.1.0": "integrity" "sha512-3quEsHmQifJOQ2oij5K+cjGjmhsKsyZI1+OTHWNZ6IXeuYviZv4U/Cui9fUJ1RN3CZxH3NzWB3gB/5qYFQfOgg==" "resolved" "https://registry.npmjs.org/@angular/core/-/core-14.1.0.tgz" "version" "14.1.0" @@ -3380,7 +3380,14 @@ "resolved" "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz" "version" "3.0.0" -"highcharts@^10.2.0": +"highcharts-angular@^3.0.0": + "integrity" "sha512-v2jMlvmzmLqqKVQdsARBewmYaQOL44lmioF9WEseuIF2KyTeZIeUtYbrEqG9uz+/dl0bsDZL6WtUrgCa42D3DQ==" + "resolved" "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "tslib" "^2.0.0" + +"highcharts@^10.2.0", "highcharts@>=6.0.0": "integrity" "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==" "resolved" "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz" "version" "10.2.0" @@ -6046,7 +6053,7 @@ "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" "version" "1.14.1" -"tslib@^2.1.0", "tslib@^2.3.0", "tslib@2.4.0": +"tslib@^2.0.0", "tslib@^2.1.0", "tslib@^2.3.0", "tslib@2.4.0": "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" "version" "2.4.0" From 038a79f1db01cd1b49b5c216197e0def3aa3481f Mon Sep 17 00:00:00 2001 From: Karma Tenzin Date: Mon, 25 Jul 2022 16:16:04 +0600 Subject: [PATCH 3/7] improved layout of dashobard and added color and tooltip --- .../creative-team.component.scss | 1 + .../dashboard/cards/cards.component.html | 14 ++-- .../dashboard/cards/cards.component.scss | 15 +++- .../dashboard/cards/cards.component.ts | 75 ++++++++++------- .../dashboard/dashboard.component.html | 2 +- .../dashboard/dashboard.module.ts | 34 ++++---- .../graph-icon/graph-icon.component.html | 7 +- .../dashboard/graphs/graphs.component.html | 20 +++-- .../dashboard/graphs/graphs.component.scss | 16 +++- .../dashboard/graphs/graphs.component.ts | 17 ++-- .../dashboard/tables/tables.component.html | 84 +++++++------------ .../dashboard/tables/tables.component.scss | 17 +++- .../dashboard/tables/tables.component.ts | 35 +++++--- src/app/shared/footer/footer.component.html | 1 - src/app/shared/header/header.component.html | 2 - src/app/shared/header/header.component.scss | 10 +++ src/app/shared/sidebar/sidebar.component.html | 32 +++++-- src/styles.scss | 4 + 18 files changed, 232 insertions(+), 154 deletions(-) diff --git a/src/app/creative-team/creative-team.component.scss b/src/app/creative-team/creative-team.component.scss index e2b2d30..9b342fa 100644 --- a/src/app/creative-team/creative-team.component.scss +++ b/src/app/creative-team/creative-team.component.scss @@ -3,4 +3,5 @@ mat-drawer-content{ float: right; width: calc(100% - 260px); transition: .33s,cubic-bezier(.685,.0473,.346,1); + background-color: #EEEEEE ; } diff --git a/src/app/creative-team/dashboard/cards/cards.component.html b/src/app/creative-team/dashboard/cards/cards.component.html index 1c055ce..e34eb4e 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.html +++ b/src/app/creative-team/dashboard/cards/cards.component.html @@ -1,19 +1,19 @@
- - - {{card.icon}} + + + {{card.icon}}
-

{{card.header}}

+

{{card.header}}

{{card.char}}
-
- {{card.foot}} -

{{card.text}}

+
+ {{card.foot}} +

{{card.text}}

diff --git a/src/app/creative-team/dashboard/cards/cards.component.scss b/src/app/creative-team/dashboard/cards/cards.component.scss index 7aa1437..574fc7d 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.scss +++ b/src/app/creative-team/dashboard/cards/cards.component.scss @@ -1,10 +1,17 @@ mat-card { margin: 20px; border-radius: 4px; - background-color: gray; + background: #fff; + box-shadow: 0 16px 38px -12px rgb(0 0 0 / 56%), 0 4px 25px 0 rgb(0 0 0 / 12%), 0 8px 10px -5px rgb(0 0 0 / 20%); +} +.card-header{ + position: relative; + height: 100px; } .header{ - background-color: azure; - width: 60px; - height: 60px; + width: 50px; + height: 50px; + position: absolute; + margin: -80px 0 0; } + diff --git a/src/app/creative-team/dashboard/cards/cards.component.ts b/src/app/creative-team/dashboard/cards/cards.component.ts index 395177c..04d9045 100644 --- a/src/app/creative-team/dashboard/cards/cards.component.ts +++ b/src/app/creative-team/dashboard/cards/cards.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, OnInit} from '@angular/core'; @Component({ selector: 'app-dashboard-cards', @@ -6,37 +6,50 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./cards.component.scss'] }) export class CardsComponent implements OnInit { -cards=[ - { - icon: 'content_copy', - header: 'Used Space', - char:'49/50 GB', - foot: 'warning', - text:'Get More Space...' - }, - { - icon: 'store', - header: 'Revenue', - char:'$34,245', - foot: 'date_range', - text:'Last 24 Hours' - }, - { - icon: 'info_outline', - header: 'Used Space', - char:'49/50 GB', - foot: 'local_offer', - text:'Get More Space...' - }, - { - icon: 'facebook', - header: 'Used Space', - char:'49/50 GB', - foot: 'update', - text:'Get More Space...' + cards = [ + { + icon: 'content_copy', + header: 'Used Space', + char: '49/50 GB', + foot: 'warning', + text: 'Get More Space...', + textColor:"#BC6EC9", + iconColor:"#F44337", + bgColor: "#FEA11E" + }, + { + icon: 'store', + header: 'Revenue', + char: '$34,245', + foot: 'date_range', + text: 'Last 24 Hours', + textColor:"#A4A29E", + iconColor:"#A4A29E", + bgColor: "#5CB460" + }, + { + icon: 'info_outline', + header: 'Used Space', + char: '49/50 GB', + foot: 'local_offer', + text: 'Get More Space...', + textColor:"#A4A29E", + iconColor:"#A4A29E", + bgColor: "#ED4D49" + }, + { + icon: 'facebook', + header: 'Used Space', + char: '49/50 GB', + foot: 'update', + text: 'Get More Space...', + textColor:"#A4A29E", + iconColor:"#A4A29E", + bgColor: "#11B8CC" + } + ] + constructor() { } -] - constructor() { } ngOnInit(): void { } diff --git a/src/app/creative-team/dashboard/dashboard.component.html b/src/app/creative-team/dashboard/dashboard.component.html index 9bdad88..8d6cca8 100644 --- a/src/app/creative-team/dashboard/dashboard.component.html +++ b/src/app/creative-team/dashboard/dashboard.component.html @@ -6,7 +6,7 @@
-
+

diff --git a/src/app/creative-team/dashboard/dashboard.module.ts b/src/app/creative-team/dashboard/dashboard.module.ts index e8fd6a2..7d9e7c3 100644 --- a/src/app/creative-team/dashboard/dashboard.module.ts +++ b/src/app/creative-team/dashboard/dashboard.module.ts @@ -16,6 +16,9 @@ import {MatTableModule} from "@angular/material/table"; import {MatButtonToggleModule} from "@angular/material/button-toggle"; import { GraphIconComponent } from './graphs/graph-icon/graph-icon.component'; import { HighchartsChartModule } from 'highcharts-angular'; +import {MatCheckboxModule} from "@angular/material/checkbox"; +import {MatListModule} from "@angular/material/list"; +import {MatTooltipModule} from "@angular/material/tooltip"; @@ -30,19 +33,22 @@ import { HighchartsChartModule } from 'highcharts-angular'; ], exports: [ ], - imports: [ - CommonModule, - MatSidenavModule, - AppRoutingModule, - SharedModule, - MatDividerModule, - FlexModule, - MatCardModule, - MatIconModule, - MatTabsModule, - MatTableModule, - MatButtonToggleModule, - HighchartsChartModule - ] + imports: [ + CommonModule, + MatSidenavModule, + AppRoutingModule, + SharedModule, + MatDividerModule, + FlexModule, + MatCardModule, + MatIconModule, + MatTabsModule, + MatTableModule, + MatButtonToggleModule, + HighchartsChartModule, + MatCheckboxModule, + MatListModule, + MatTooltipModule + ] }) export class DashboardModule { } diff --git a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html index 052084f..55164b0 100644 --- a/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html +++ b/src/app/creative-team/dashboard/graphs/graph-icon/graph-icon.component.html @@ -1,6 +1,5 @@ + [options]="chartOptions" + style="width: 100%; height: 200px; display: block;"> + diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.html b/src/app/creative-team/dashboard/graphs/graphs.component.html index 51aaa06..7b102cb 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.html +++ b/src/app/creative-team/dashboard/graphs/graphs.component.html @@ -1,18 +1,20 @@
- - -
- + + +
+ + +
-
+
{{graph.updates}} -

{{graph.info}}

+

{{graph.info}}

- -
- {{graph.icon}} + + diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.scss b/src/app/creative-team/dashboard/graphs/graphs.component.scss index f2a9da6..bcc9d06 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.scss +++ b/src/app/creative-team/dashboard/graphs/graphs.component.scss @@ -1,9 +1,23 @@ mat-card { margin: 20px; border-radius: 4px; - background-color: blanchedalmond; + background: #fff; + box-shadow: 0 16px 38px -12px rgb(0 0 0 / 56%), 0 4px 25px 0 rgb(0 0 0 / 12%), 0 8px 10px -5px rgb(0 0 0 / 20%); +} +.main-header{ + position: relative; + height: 250px; + p{ + padding: 12px 0 2px; + } } .header{ + border-radius: 5px; width: 100%; height: 100%; + position: absolute; + margin: -36px 0 0; +} +.footer-blog{ + padding: 10px 12px 0; } diff --git a/src/app/creative-team/dashboard/graphs/graphs.component.ts b/src/app/creative-team/dashboard/graphs/graphs.component.ts index 3370b30..4ee8cb2 100644 --- a/src/app/creative-team/dashboard/graphs/graphs.component.ts +++ b/src/app/creative-team/dashboard/graphs/graphs.component.ts @@ -9,21 +9,24 @@ export class GraphsComponent implements OnInit { graphs=[ { updates: 'Daily Sales', - info:'55%', + info:'55% increase in today sales.', icon:'update', foot: 'update 4 minutes ago', + bgColor: "#5CB460" }, { - updates: 'Daily Sales', - info:'55%', + updates: 'Email Subscriptions', + info:'Last Campaign Performance', icon:'update', - foot: 'update 4 minutes ago', + foot: 'campaign sent 2 days ago', + bgColor: "#FEA11E" }, { - updates: 'Daily Sales', - info:'55%', + updates: 'Completed Tasks', + info:'Last Campaign Performance', icon:'update', - foot: 'update 4 minutes ago', + foot: 'campaign sent 2 days ago', + bgColor: "#ED4D49" } ] constructor() { } diff --git a/src/app/creative-team/dashboard/tables/tables.component.html b/src/app/creative-team/dashboard/tables/tables.component.html index 3c8f431..8a7ef6e 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.html +++ b/src/app/creative-team/dashboard/tables/tables.component.html @@ -1,71 +1,51 @@
- - - Tasks: - - - bug_report - BoldI - - - code - ItalickI - - - cloud - UnderlineI - - + + + + Tasks: + bug_report BUGS + code WEBSITE + cloud SERVER + - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
+ + +
+
+ {{word.info}} +
+ edit + close +
+
+ +
- - + +

Employees Stats

New employees on 15th September, 2016

- + - + @@ -77,13 +57,13 @@ - + - + diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss index 193d360..10a8df3 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.scss +++ b/src/app/creative-team/dashboard/tables/tables.component.scss @@ -1,11 +1,24 @@ mat-card { margin: 20px; border-radius: 4px; - background-color: gray; + background: #fff; + box-shadow: 0 16px 38px -12px rgb(0 0 0 / 56%), 0 4px 25px 0 rgb(0 0 0 / 12%), 0 8px 10px -5px rgb(0 0 0 / 20%); } table{ width: 100%; } +.table{ + margin: 18px 2px; +} +.main-header{ + position: relative; + width: 100%; +} .header{ - background-color: azure; + position: absolute; + width: 100%; + margin: -60px 4px -10px 0; +} +.main-content{ + height: 260px; } diff --git a/src/app/creative-team/dashboard/tables/tables.component.ts b/src/app/creative-team/dashboard/tables/tables.component.ts index a5d7d8c..35d4e59 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.ts +++ b/src/app/creative-team/dashboard/tables/tables.component.ts @@ -1,4 +1,7 @@ import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {TooltipPosition} from '@angular/material/tooltip'; + export interface PeriodicElement { name: string; position: number; @@ -7,16 +10,10 @@ export interface PeriodicElement { } const ELEMENT_DATA: PeriodicElement[] = [ - {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, - {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, - {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, - {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, - {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, - {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, - {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, - {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, - {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, - {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, + {position: 1, name: 'Sonam', weight: 100, symbol: 'Bhutan'}, + {position: 2, name: 'Sangay', weight: 100, symbol: 'Korea'}, + {position: 3, name: 'Lhatruel', weight: 100, symbol: 'Japan'}, + {position: 4, name: 'Dhan', weight: 100, symbol: 'Singapore'}, ]; @Component({ @@ -25,8 +22,26 @@ const ELEMENT_DATA: PeriodicElement[] = [ styleUrls: ['./tables.component.scss'] }) export class TablesComponent implements OnInit { + //tooltip position + positionOptions: TooltipPosition[] = ['after', 'before', 'above', 'below', 'left', 'right']; + position = new FormControl(this.positionOptions[2]); + //graph displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; dataSource = ELEMENT_DATA; + words=[ + { + info:'Sign contract for "What are conference organizers afraid of?"', + }, + { + info:'Lines From Great Russian Literature? Or E-mails From My Boss?', + }, + { + info:'Flooded: One year later, assessing what was lost and what was found', + }, + { + info:'Create 4 Invisible User Experiences you Never Knew About', + } + ]; constructor() { } ngOnInit(): void { diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index 4c4ac7f..b37d1ce 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -9,5 +9,4 @@

©: All rights reserved 2019

- diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index 38797dc..8a32c95 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -3,9 +3,7 @@ Dashboard
-
-
diff --git a/src/app/shared/header/header.component.scss b/src/app/shared/header/header.component.scss index 2f750cb..cf78b4e 100644 --- a/src/app/shared/header/header.component.scss +++ b/src/app/shared/header/header.component.scss @@ -1,3 +1,13 @@ ul li { list-style: none; } +.form-control { + border-top: 0; + border-right: 0; + border-left: 0; + height: 20px; + padding-right: 20px; +} +mat-toolbar{ + background-color: #EEEEEE; +} diff --git a/src/app/shared/sidebar/sidebar.component.html b/src/app/shared/sidebar/sidebar.component.html index ecac5df..7b46726 100644 --- a/src/app/shared/sidebar/sidebar.component.html +++ b/src/app/shared/sidebar/sidebar.component.html @@ -1,20 +1,34 @@
No. ID {{element.position}} Weight Salary {{element.weight}} Symbol Country {{element.symbol}}
- + - + - + - + diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss index 10a8df3..ee70392 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.scss +++ b/src/app/creative-team/dashboard/tables/tables.component.scss @@ -4,21 +4,26 @@ mat-card { background: #fff; box-shadow: 0 16px 38px -12px rgb(0 0 0 / 56%), 0 4px 25px 0 rgb(0 0 0 / 12%), 0 8px 10px -5px rgb(0 0 0 / 20%); } -table{ + +table { width: 100%; + height: 100%; } -.table{ - margin: 18px 2px; + +.table { + margin: 18px 2px; } -.main-header{ + +.main-header { position: relative; width: 100%; } -.header{ + +.header { position: absolute; width: 100%; - margin: -60px 4px -10px 0; + margin: -40px 4px -10px 0; } -.main-content{ - height: 260px; +.main-card{ + height: 350px; } diff --git a/src/app/creative-team/dashboard/tables/tables.component.ts b/src/app/creative-team/dashboard/tables/tables.component.ts index 35d4e59..ded8c44 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.ts +++ b/src/app/creative-team/dashboard/tables/tables.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, OnInit} from '@angular/core'; import {FormControl} from '@angular/forms'; import {TooltipPosition} from '@angular/material/tooltip'; @@ -28,21 +28,31 @@ export class TablesComponent implements OnInit { //graph displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; dataSource = ELEMENT_DATA; - words=[ + words = [ { - info:'Sign contract for "What are conference organizers afraid of?"', + info: 'Sign contract for "What are conference organizers afraid of?"', + edit:"#BC6EC9", + delete:"#ED4D49" }, { - info:'Lines From Great Russian Literature? Or E-mails From My Boss?', + info: 'Lines From Great Russian Literature? Or E-mails From My Boss?', + edit:"#BC6EC9", + delete:"#ED4D49" }, { - info:'Flooded: One year later, assessing what was lost and what was found', + info: 'Flooded: One year later, assessing what was lost and what was found', + edit:"#BC6EC9", + delete:"#ED4D49" }, { - info:'Create 4 Invisible User Experiences you Never Knew About', + info: 'Create 4 Invisible User Experiences you Never Knew About', + edit:"#BC6EC9", + delete:"#ED4D49" } ]; - constructor() { } + + constructor() { + } ngOnInit(): void { } diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index b37d1ce..f7cbecd 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -7,6 +7,6 @@
  • BLOG
  • LICENSES
  • -

    ©: All rights reserved 2019

    +

    © 2022, made with love by Creative Tim for a better web.

    diff --git a/src/app/shared/footer/footer.component.scss b/src/app/shared/footer/footer.component.scss index 5abaeaa..4c68db8 100644 --- a/src/app/shared/footer/footer.component.scss +++ b/src/app/shared/footer/footer.component.scss @@ -6,4 +6,5 @@ ul{ } p{ float: right; + margin-right: 18px; } diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index 8a32c95..49e0f19 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -1,15 +1,17 @@ - + - Dashboard -
    -
    - -
    -
      +
      • +
    - - + - +

    Employees Stats

    New employees on 15th September, 2016

    - +

    diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss index ee70392..17c685f 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.scss +++ b/src/app/creative-team/dashboard/tables/tables.component.scss @@ -1,19 +1,8 @@ -mat-card { - margin: 20px; - border-radius: 4px; - background: #fff; - box-shadow: 0 16px 38px -12px rgb(0 0 0 / 56%), 0 4px 25px 0 rgb(0 0 0 / 12%), 0 8px 10px -5px rgb(0 0 0 / 20%); -} - table { width: 100%; height: 100%; } -.table { - margin: 18px 2px; -} - .main-header { position: relative; width: 100%; @@ -23,7 +12,9 @@ table { position: absolute; width: 100%; margin: -40px 4px -10px 0; + height: 72px; } -.main-card{ - height: 350px; + +.card--shadow { + height: 348px; } diff --git a/src/app/creative-team/dashboard/tables/tables.component.ts b/src/app/creative-team/dashboard/tables/tables.component.ts index ded8c44..11077fa 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.ts +++ b/src/app/creative-team/dashboard/tables/tables.component.ts @@ -22,32 +22,29 @@ const ELEMENT_DATA: PeriodicElement[] = [ styleUrls: ['./tables.component.scss'] }) export class TablesComponent implements OnInit { - //tooltip position - positionOptions: TooltipPosition[] = ['after', 'before', 'above', 'below', 'left', 'right']; - position = new FormControl(this.positionOptions[2]); //graph displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; dataSource = ELEMENT_DATA; words = [ { info: 'Sign contract for "What are conference organizers afraid of?"', - edit:"#BC6EC9", - delete:"#ED4D49" + edit: "#BC6EC9", + delete: "#ED4D49" }, { info: 'Lines From Great Russian Literature? Or E-mails From My Boss?', - edit:"#BC6EC9", - delete:"#ED4D49" + edit: "#BC6EC9", + delete: "#ED4D49" }, { info: 'Flooded: One year later, assessing what was lost and what was found', - edit:"#BC6EC9", - delete:"#ED4D49" + edit: "#BC6EC9", + delete: "#ED4D49" }, { info: 'Create 4 Invisible User Experiences you Never Knew About', - edit:"#BC6EC9", - delete:"#ED4D49" + edit: "#BC6EC9", + delete: "#ED4D49" } ]; diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index f7cbecd..eb92827 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -1,12 +1,12 @@ -
    ID ID {{element.position}} Name Name {{element.name}} Salary Salary {{element.weight}} Country Country {{element.symbol}}
    - + - + - + - + diff --git a/src/app/creative-team/dashboard/tables/tables.component.scss b/src/app/creative-team/dashboard/tables/tables.component.scss index 17c685f..8eeedeb 100644 --- a/src/app/creative-team/dashboard/tables/tables.component.scss +++ b/src/app/creative-team/dashboard/tables/tables.component.scss @@ -1,18 +1,19 @@ -table { - width: 100%; - height: 100%; -} - -.main-header { +.header { position: relative; width: 100%; + + &__content { + position: absolute; + top: -24px; + right: 16px; + width: 100%; + height: 72px; + } } -.header { - position: absolute; +table { width: 100%; - margin: -40px 4px -10px 0; - height: 72px; + height: 100%; } .card--shadow { diff --git a/src/app/creative-team/maps/maps.component.html b/src/app/creative-team/maps/maps.component.html new file mode 100644 index 0000000..1879a4a --- /dev/null +++ b/src/app/creative-team/maps/maps.component.html @@ -0,0 +1 @@ +

    maps works!

    diff --git a/src/app/creative-team/maps/maps.component.scss b/src/app/creative-team/maps/maps.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/creative-team/maps/maps.component.spec.ts b/src/app/creative-team/maps/maps.component.spec.ts new file mode 100644 index 0000000..47f1e6c --- /dev/null +++ b/src/app/creative-team/maps/maps.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MapsComponent } from './maps.component'; + +describe('MapsComponent', () => { + let component: MapsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MapsComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MapsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/maps/maps.component.ts b/src/app/creative-team/maps/maps.component.ts new file mode 100644 index 0000000..75df2c6 --- /dev/null +++ b/src/app/creative-team/maps/maps.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-maps', + templateUrl: './maps.component.html', + styleUrls: ['./maps.component.scss'] +}) +export class MapsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/table-list/table-list.component.html b/src/app/creative-team/table-list/table-list.component.html new file mode 100644 index 0000000..cc12023 --- /dev/null +++ b/src/app/creative-team/table-list/table-list.component.html @@ -0,0 +1,76 @@ +
    + +

    Edit Profile

    +

    Complete your profile

    +
    +
    ID ID {{element.position}} Name Name {{element.name}} Salary Salary {{element.weight}} Country Country {{element.symbol}}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}} Salary {{element.salary}}
    +
    + +
    + +

    Edit Profile

    +

    Complete your profile

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}} Salary {{element.salary}}
    +
    diff --git a/src/app/creative-team/table-list/table-list.component.scss b/src/app/creative-team/table-list/table-list.component.scss new file mode 100644 index 0000000..961b588 --- /dev/null +++ b/src/app/creative-team/table-list/table-list.component.scss @@ -0,0 +1,11 @@ +.table{ + position: relative; + &__header{ + position: absolute; + top: 25px; + width: 94%; + } + &__content{ + width: 100%; + } +} diff --git a/src/app/creative-team/table-list/table-list.component.spec.ts b/src/app/creative-team/table-list/table-list.component.spec.ts new file mode 100644 index 0000000..32ff6ed --- /dev/null +++ b/src/app/creative-team/table-list/table-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TableListComponent } from './table-list.component'; + +describe('TableListComponent', () => { + let component: TableListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TableListComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TableListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/table-list/table-list.component.ts b/src/app/creative-team/table-list/table-list.component.ts new file mode 100644 index 0000000..42b5597 --- /dev/null +++ b/src/app/creative-team/table-list/table-list.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; + salary: number; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H', salary: 100.0}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He', salary: 100}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li', salary: 100}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be', salary: 100}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B', salary: 100}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C', salary: 100}, +]; + +@Component({ + selector: 'app-table-list', + templateUrl: './table-list.component.html', + styleUrls: ['./table-list.component.scss'] +}) +export class TableListComponent implements OnInit { + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol','salary']; + dataSource = ELEMENT_DATA; + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/user-profile/user-profile.component.html b/src/app/creative-team/user-profile/user-profile.component.html new file mode 100644 index 0000000..23ffbef --- /dev/null +++ b/src/app/creative-team/user-profile/user-profile.component.html @@ -0,0 +1,82 @@ +
    + + + +

    Edit Profile

    +

    Complete your profile

    +
    +
    + +
    + + Company(disabled) + + + + Username + + + + Email address + + +
    +
    + + First Name + + + + Last Name + + +
    + + Adress + + +
    + + City + + + + Country + + + + Postal Code + + +
    +

    About Me

    + + Lamborghini Mercy, Your chick she so thirsty,i am in that two seat Lambo. + + +
    + + + +
    + +
    + + +
    +
    + +

    CEO / Co-Founder

    +

    Alec Thompson

    +

    Don't be scared of the truth because we need to restart the human foundation in truth And + I love you like Kanye loves Kanye I love Rick Owens’ bed design but the back is... +

    +
    + + + +
    +
    +
    diff --git a/src/app/creative-team/user-profile/user-profile.component.scss b/src/app/creative-team/user-profile/user-profile.component.scss new file mode 100644 index 0000000..f57e0c8 --- /dev/null +++ b/src/app/creative-team/user-profile/user-profile.component.scss @@ -0,0 +1,47 @@ +.form { + position: relative; + + &__header { + position: absolute; + top: -39px; + width: 100%; + height: 82px; + } + + &__area { + width: 100%; + } +} + +.wrapper { + display: block; + height: calc(100vh - 128px); +} + +.profile { + + &__header { + position: relative; + width: 100%; + height: 82px; + } + + &__content { + p, h2 { + text-align: center; + font-weight: 300; + } + } + + &__image { + background-image: url('https://demos.creative-tim.com/material-dashboard-angular2/assets/img/faces/marc.jpg'); + background-size: cover; + position: absolute; + height: 130px; + width: 130px; + bottom: 16px; + left: 180px; + box-shadow: 0 16px 38px -12px rgba(0, 0, 0, .56), 0 4px 25px 0 rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .2); + } +} + diff --git a/src/app/creative-team/user-profile/user-profile.component.spec.ts b/src/app/creative-team/user-profile/user-profile.component.spec.ts new file mode 100644 index 0000000..f4ff0ad --- /dev/null +++ b/src/app/creative-team/user-profile/user-profile.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserProfileComponent } from './user-profile.component'; + +describe('UserProfileComponent', () => { + let component: UserProfileComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UserProfileComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UserProfileComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/creative-team/user-profile/user-profile.component.ts b/src/app/creative-team/user-profile/user-profile.component.ts new file mode 100644 index 0000000..d7ff774 --- /dev/null +++ b/src/app/creative-team/user-profile/user-profile.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-user-profile', + templateUrl: './user-profile.component.html', + styleUrls: ['./user-profile.component.scss'] +}) +export class UserProfileComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/creative-team/user-profile/user-profile.module.ts b/src/app/creative-team/user-profile/user-profile.module.ts new file mode 100644 index 0000000..ec6457f --- /dev/null +++ b/src/app/creative-team/user-profile/user-profile.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {UserProfileComponent} from "./user-profile.component"; +import {FlexLayoutModule} from "@angular/flex-layout"; +import {MatCardModule} from "@angular/material/card"; +import {MatInputModule} from "@angular/material/input"; + +@NgModule({ + declarations: [ + UserProfileComponent + ], + imports: [ + CommonModule, + FlexLayoutModule, + MatCardModule, + MatInputModule + ] +}) +export class UserProfileModule { } diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index eb92827..2b06227 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -1,12 +1,12 @@
    -
    -
      -
    • CREATIVE TIM
    • -
    • ABOUT US
    • -
    • BLOG
    • -
    • LICENSES
    • -
    -

    © 2022, made with love by Creative Tim for a better web.

    +
    +
    +

    CREATIVE TIM

    +

    ABOUT US

    +

    BLOG

    +

    LICENSES

    +
    +

    © 2022, made with love by Creative Tim for a better web.

    diff --git a/src/app/shared/footer/footer.component.scss b/src/app/shared/footer/footer.component.scss index da54a55..e69de29 100644 --- a/src/app/shared/footer/footer.component.scss +++ b/src/app/shared/footer/footer.component.scss @@ -1,8 +0,0 @@ -li { - list-style: none; -} - -p { - float: right; - margin-right: 18px; -} diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html index f4ac60b..40adf39 100644 --- a/src/app/shared/header/header.component.html +++ b/src/app/shared/header/header.component.html @@ -1,17 +1,17 @@ -

    Dashboard

    +

    Dashboard

    - +
    -
      +