diff --git a/package-lock.json b/package-lock.json
index 6c79098..9439b71 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1455,6 +1455,32 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@fortawesome/angular-fontawesome": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.6.1.tgz",
+ "integrity": "sha512-ARQjtRuT+ZskzJDJKPwuiGO3+7nS0iyNLU/uHVJHfG4LwGJxwVIGldwg1SU957sra0Z0OtWEajHMhiS4vB9LwQ=="
+ },
+ "@fortawesome/fontawesome-common-types": {
+ "version": "0.2.28",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.28.tgz",
+ "integrity": "sha512-gtis2/5yLdfI6n0ia0jH7NJs5i/Z/8M/ZbQL6jXQhCthEOe5Cr5NcQPhgTvFxNOtURE03/ZqUcEskdn2M+QaBg=="
+ },
+ "@fortawesome/fontawesome-svg-core": {
+ "version": "1.2.28",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz",
+ "integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==",
+ "requires": {
+ "@fortawesome/fontawesome-common-types": "^0.2.28"
+ }
+ },
+ "@fortawesome/free-solid-svg-icons": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz",
+ "integrity": "sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg==",
+ "requires": {
+ "@fortawesome/fontawesome-common-types": "^0.2.28"
+ }
+ },
"@istanbuljs/schema": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
diff --git a/package.json b/package.json
index 1b40c82..9c8413a 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,9 @@
"@angular/platform-browser": "~9.1.3",
"@angular/platform-browser-dynamic": "~9.1.3",
"@angular/router": "~9.1.3",
+ "@fortawesome/angular-fontawesome": "^0.6.1",
+ "@fortawesome/fontawesome-svg-core": "^1.2.28",
+ "@fortawesome/free-solid-svg-icons": "^5.13.0",
"rxjs": "~6.5.4",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
diff --git a/src/app/core/commons/variables.less b/src/app/core/commons/variables.less
new file mode 100644
index 0000000..d9bc831
--- /dev/null
+++ b/src/app/core/commons/variables.less
@@ -0,0 +1,10 @@
+@color-white: white;
+@color-gray: #f2f3f7;
+@color-gray1: #f2f3f7df;
+@color-gray2: #d9dbe3;
+@color-gray3: #979cac;
+@color-black: #414452;
+@color-green: #9bc837;
+@color-green1: #8cc837;
+@color-blue: #30b6dd;
+@color-blue1: #64b6dd;
diff --git a/src/app/core/mocks/mocked-data.ts b/src/app/core/mocks/mocked-data.ts
index f831078..bfb19d2 100644
--- a/src/app/core/mocks/mocked-data.ts
+++ b/src/app/core/mocks/mocked-data.ts
@@ -5,21 +5,65 @@ export const fakeVideoList: CourseItemInfo[] = [
id: 1,
title: 'video_1',
createdAtDate: new Date,
- durationTime: '120',
- description: 'description of 1st video'
- },
+ durationTime: 120,
+ description:
+ `Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ `
+ } ,
{
id: 2,
title: 'video_2',
createdAtDate: new Date,
- durationTime: '120',
- description: 'description of 2nd video'
+ durationTime: 180,
+ description:
+ `Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ `
},
{
id: 3,
title: 'video_3',
createdAtDate: new Date,
- durationTime: '120',
- description: 'description of 3st video'
+ durationTime: 180,
+ description:
+ `Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ `
+ },
+ {
+ id: 4,
+ title: 'video_4',
+ createdAtDate: new Date,
+ durationTime: 132,
+ description:
+ `Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ `
+ },
+ {
+ id: 5,
+ title: 'video_5',
+ createdAtDate: new Date,
+ durationTime: 120,
+ description:
+ `Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ nostrum dolor, consequuntur, quia laudantium tempore? Neque doloremque eos rerum nulla.
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Fuga at magni dignissimos accusamus asperiores enim corrupti nobis dolorem ducimus
+ `
}
];
diff --git a/src/app/core/models/course-item.interface.ts b/src/app/core/models/course-item.interface.ts
index 5113956..a5361ca 100644
--- a/src/app/core/models/course-item.interface.ts
+++ b/src/app/core/models/course-item.interface.ts
@@ -3,6 +3,6 @@ export interface CourseItemInfo {
id: number;
title: string;
createdAtDate: Date;
- durationTime: string;
+ durationTime: number;
description: string;
}
diff --git a/src/app/core/pipes/transform-minutes.pipe.ts b/src/app/core/pipes/transform-minutes.pipe.ts
new file mode 100644
index 0000000..6fb81e3
--- /dev/null
+++ b/src/app/core/pipes/transform-minutes.pipe.ts
@@ -0,0 +1,34 @@
+import { Pipe, PipeTransform } from '@angular/core';
+/*
+ * Transform time in hh:mm format
+ * Usage:
+ * time | transformMinutesToHours
+ * Example:
+ * {{ 120 | transformMinutesToHours }}
+ * formats to: 2h
+ *
+ * {{ 16 | transformMinutesToHours }}
+ * formats to: 16min
+ *
+ * {{ 61 | transformMinutesToHours }}
+ * formats to: 1h 1min
+*/
+const MINUTE_IN_SEC: number = 60;
+@Pipe({name: 'transformMinutesToHours'})
+
+export class TransformMinutesToHoursPipe implements PipeTransform {
+ public transform(time: number): string {
+ if (time < MINUTE_IN_SEC) {
+ return `${time}min`;
+ }
+
+ if (time % MINUTE_IN_SEC === 0) {
+ return `${Math.floor(time / MINUTE_IN_SEC)}h`;
+ }
+
+ const hours: number = Math.floor(time / MINUTE_IN_SEC);
+ const minutes: number = time % MINUTE_IN_SEC;
+
+ return `${hours}h ${minutes}min`;
+ }
+}
diff --git a/src/app/course-page/course-page.component.html b/src/app/course-page/course-page.component.html
new file mode 100644
index 0000000..b9d1c81
--- /dev/null
+++ b/src/app/course-page/course-page.component.html
@@ -0,0 +1 @@
+
course-page works!
diff --git a/src/app/course-page/course-page.component.less b/src/app/course-page/course-page.component.less
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/course-page/course-page.component.spec.ts b/src/app/course-page/course-page.component.spec.ts
new file mode 100644
index 0000000..c795e29
--- /dev/null
+++ b/src/app/course-page/course-page.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CoursePageComponent } from './course-page.component';
+
+describe('CoursePageComponent', () => {
+ let component: CoursePageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CoursePageComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CoursePageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/course-page/course-page.component.ts b/src/app/course-page/course-page.component.ts
new file mode 100644
index 0000000..550e833
--- /dev/null
+++ b/src/app/course-page/course-page.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-course-page',
+ templateUrl: './course-page.component.html',
+ styleUrls: ['./course-page.component.less']
+})
+export class CoursePageComponent { }
diff --git a/src/app/course-page/course-page.module.ts b/src/app/course-page/course-page.module.ts
new file mode 100644
index 0000000..abd3368
--- /dev/null
+++ b/src/app/course-page/course-page.module.ts
@@ -0,0 +1,10 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { CoursePageComponent } from './course-page.component';
+
+@NgModule({
+ declarations: [CoursePageComponent],
+ exports: [CoursePageComponent],
+ imports: [CommonModule]
+})
+export class CoursePageModule { }
diff --git a/src/app/home-page/course-list/course-item/course-item.component.html b/src/app/home-page/course-list/course-item/course-item.component.html
new file mode 100644
index 0000000..d3b6d33
--- /dev/null
+++ b/src/app/home-page/course-list/course-item/course-item.component.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ {{item.description}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/home-page/course-list/course-item/course-item.component.less b/src/app/home-page/course-list/course-item/course-item.component.less
new file mode 100644
index 0000000..e54ca20
--- /dev/null
+++ b/src/app/home-page/course-list/course-item/course-item.component.less
@@ -0,0 +1,87 @@
+@import '../../../core/commons/variables';
+
+.course-list-item {
+ display: flex;
+ flex-wrap: nowrap;
+ padding: 20px;
+ border: 1px solid @color-gray;
+ background-color: @color-white;
+ border-radius: 6px;
+ box-shadow: 5px 5px 18px @color-gray2;
+ margin-bottom: 20px;
+
+ &-data {
+ width: 80%;
+ padding-right: 50px;
+ font-family: 'SourseSansPro Regular';
+
+ &-header {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+
+ &-info {
+ display: flex;
+ color: @color-gray2;
+
+ p:first-child {
+ margin-right: 20px;
+ }
+ }
+
+ &-title {
+ display: flex;
+ a {
+ font-size: 30px;
+ text-decoration: none;
+ text-transform: uppercase;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+
+ &-text {
+ line-height: 2;
+ }
+ }
+
+ &-actions {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 20%;
+
+ button {
+ height: 25px;
+ width: 200px;
+ margin-right: 8px;
+ margin-left: 8px;
+ background-color: @color-blue;
+ color: @color-white;
+ border-radius: 3px;
+ border: none;
+ font-size: 12px;
+ font-family: 'SourseSansPro Semibold';
+ cursor: pointer;
+ outline: none;
+ &:hover {
+ background-color: @color-blue1;
+ }
+ }
+ }
+
+ &-loadmore {
+ margin-top: 15px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 50px;
+ border: 1px solid @color-gray;
+ box-shadow: 5px 5px 18px @color-gray2;
+ background-color: @color-white;
+ border-radius: 6px;
+ }
+}
\ No newline at end of file
diff --git a/src/app/home-page/course-list/course-item/course-item.component.spec.ts b/src/app/home-page/course-list/course-item/course-item.component.spec.ts
new file mode 100644
index 0000000..699fc04
--- /dev/null
+++ b/src/app/home-page/course-list/course-item/course-item.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CourseItemComponent } from './course-item.component';
+
+describe('CourseItemComponent', () => {
+ let component: CourseItemComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CourseItemComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CourseItemComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/home-page/course-list/course-item/course-item.component.ts b/src/app/home-page/course-list/course-item/course-item.component.ts
new file mode 100644
index 0000000..91fed04
--- /dev/null
+++ b/src/app/home-page/course-list/course-item/course-item.component.ts
@@ -0,0 +1,24 @@
+import { Component, Input, Output, EventEmitter } from '@angular/core';
+import { IconDefinition, faEdit, faTrash, faClock, faCalendar } from '@fortawesome/free-solid-svg-icons';
+import { CourseItemInfo } from 'src/app/core/models';
+import { Router } from '@angular/router';
+
+@Component({
+ selector: 'app-course-item',
+ templateUrl: './course-item.component.html',
+ styleUrls: ['./course-item.component.less']
+})
+export class CourseItemComponent {
+ @Input() public item: CourseItemInfo;
+ @Input() public routerLink: Router;
+ @Output() public onDeleteCourse: EventEmitter = new EventEmitter();
+
+ public editButtonIcon: IconDefinition = faEdit;
+ public trashButtonIcon: IconDefinition = faTrash;
+ public clockButtonIcon: IconDefinition = faClock;
+ public calendarButtonIcon: IconDefinition = faCalendar;
+
+ public onDeleteCourseEmit(id: number): void {
+ return this.onDeleteCourse.emit(id);
+ }
+}
diff --git a/src/app/home-page/course-list/course-list.component.html b/src/app/home-page/course-list/course-list.component.html
index 500bef8..7833452 100644
--- a/src/app/home-page/course-list/course-list.component.html
+++ b/src/app/home-page/course-list/course-list.component.html
@@ -1,19 +1,12 @@
-course-list works!
-
- -
-
- id: {{item.id}}
-
-
- title: {{item.title}}
-
-
- created: {{item.createdAtDate}}
-
-
- duration: {{item.durationTime}}
-
-
+
-
-
diff --git a/src/app/home-page/course-list/course-list.component.less b/src/app/home-page/course-list/course-list.component.less
index 35fd24b..3938adb 100644
--- a/src/app/home-page/course-list/course-list.component.less
+++ b/src/app/home-page/course-list/course-list.component.less
@@ -1,8 +1,18 @@
-.course-list-items {
+@import '../../core/commons/variables';
+
+.course-list {
list-style-type: none;
padding-inline-start: 0;
- .course-list-item {
- padding: 20px;
- border: 1px solid gray;
+
+ &-item-loadmore {
+ margin-top: 15px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 50px;
+ border: 1px solid @color-gray;
+ box-shadow: 5px 5px 18px @color-gray2;
+ background-color: @color-white;
+ border-radius: 6px;
}
-}
+}
\ No newline at end of file
diff --git a/src/app/home-page/course-list/course-list.component.ts b/src/app/home-page/course-list/course-list.component.ts
index e92a5d8..7d249b3 100644
--- a/src/app/home-page/course-list/course-list.component.ts
+++ b/src/app/home-page/course-list/course-list.component.ts
@@ -7,6 +7,9 @@ import { CourseItemInfo } from 'src/app/core/models';
styleUrls: ['./course-list.component.less']
})
export class CourseListComponent {
-
@Input() public courses: CourseItemInfo[] = [];
+
+ public onDeleteCourse(id: number): void {
+ console.log(id);
+ }
}
diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html
index 4f02074..b782d6b 100644
--- a/src/app/home-page/home-page.component.html
+++ b/src/app/home-page/home-page.component.html
@@ -1,7 +1,9 @@
-
+
\ No newline at end of file
diff --git a/src/app/home-page/home-page.component.less b/src/app/home-page/home-page.component.less
index e69de29..4d598cc 100644
--- a/src/app/home-page/home-page.component.less
+++ b/src/app/home-page/home-page.component.less
@@ -0,0 +1,8 @@
+@import '../core/commons/variables';
+
+.course-page {
+ padding-bottom: 30px;
+ &-toolbox {
+ padding-top: 25px;
+ }
+}
\ No newline at end of file
diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts
index 3ca2d63..6c5d298 100644
--- a/src/app/home-page/home-page.component.ts
+++ b/src/app/home-page/home-page.component.ts
@@ -1,4 +1,4 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
import { fakeVideoList } from '../core/mocks/mocked-data';
import { CourseItemInfo } from '../core/models';
@@ -7,7 +7,11 @@ import { CourseItemInfo } from '../core/models';
templateUrl: './home-page.component.html',
styleUrls: ['./home-page.component.less']
})
-export class HomePageComponent {
+export class HomePageComponent implements OnInit {
- public courses: CourseItemInfo[] = fakeVideoList;
+ public courses: CourseItemInfo[];
+
+ public ngOnInit(): void {
+ this.courses = fakeVideoList;
+ }
}
diff --git a/src/app/home-page/home-page.module.ts b/src/app/home-page/home-page.module.ts
index 25904cd..789ba3b 100644
--- a/src/app/home-page/home-page.module.ts
+++ b/src/app/home-page/home-page.module.ts
@@ -1,10 +1,14 @@
import { NgModule } from '@angular/core';
+import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { HomePageComponent } from './home-page.component';
import { CourseListComponent } from './course-list/course-list.component';
import { ToolboxComponent } from './toolbox/toolbox.component';
import { SearchComponent } from './toolbox/search/search.component';
import { AddCourseComponent } from './toolbox/add-course/add-course.component';
+import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
+import { CourseItemComponent } from './course-list/course-item/course-item.component';
+import { TransformMinutesToHoursPipe } from '../core/pipes/transform-minutes.pipe';
@NgModule({
declarations: [
@@ -12,11 +16,15 @@ import { AddCourseComponent } from './toolbox/add-course/add-course.component';
CourseListComponent,
ToolboxComponent,
SearchComponent,
- AddCourseComponent
+ AddCourseComponent,
+ CourseItemComponent,
+ TransformMinutesToHoursPipe
],
exports: [HomePageComponent],
imports: [
- CommonModule
+ CommonModule,
+ FontAwesomeModule,
+ FormsModule
]
})
export class HomePageModule { }
diff --git a/src/app/home-page/toolbox/add-course/add-course.component.html b/src/app/home-page/toolbox/add-course/add-course.component.html
index 7102df9..84f5202 100644
--- a/src/app/home-page/toolbox/add-course/add-course.component.html
+++ b/src/app/home-page/toolbox/add-course/add-course.component.html
@@ -1 +1,8 @@
-add-course works!
+
+
+
\ No newline at end of file
diff --git a/src/app/home-page/toolbox/add-course/add-course.component.less b/src/app/home-page/toolbox/add-course/add-course.component.less
index e69de29..36f00b0 100644
--- a/src/app/home-page/toolbox/add-course/add-course.component.less
+++ b/src/app/home-page/toolbox/add-course/add-course.component.less
@@ -0,0 +1,34 @@
+@import '../../../core/commons/variables';
+
+.add-course {
+ margin-top: 26px;
+ display: flex;
+ justify-content: flex-end;
+
+ &-button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 138px;
+ height: 36px;
+ border: none;
+ background: @color-blue;
+ color: @color-white;
+ border-radius: 3px;
+ font-family: 'SourseSansPro Semibold';
+ font-size: 14px;
+ cursor: pointer;
+ outline: none;
+ &:hover {
+ background: @color-blue1
+ }
+
+ &-text {
+ padding-left: 10px;
+ }
+
+ &-icon {
+ font-size: 20px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/app/home-page/toolbox/add-course/add-course.component.ts b/src/app/home-page/toolbox/add-course/add-course.component.ts
index 10943a1..74dd6e8 100644
--- a/src/app/home-page/toolbox/add-course/add-course.component.ts
+++ b/src/app/home-page/toolbox/add-course/add-course.component.ts
@@ -1,3 +1,5 @@
+import { IconDefinition, faPlus } from '@fortawesome/free-solid-svg-icons';
+
import { Component } from '@angular/core';
@Component({
@@ -5,4 +7,6 @@ import { Component } from '@angular/core';
templateUrl: './add-course.component.html',
styleUrls: ['./add-course.component.less']
})
-export class AddCourseComponent { }
+export class AddCourseComponent {
+ public addCourseIcon: IconDefinition = faPlus;
+}
diff --git a/src/app/home-page/toolbox/search/search.component.html b/src/app/home-page/toolbox/search/search.component.html
index c99423e..efec2aa 100644
--- a/src/app/home-page/toolbox/search/search.component.html
+++ b/src/app/home-page/toolbox/search/search.component.html
@@ -1 +1,10 @@
-search works!
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/home-page/toolbox/search/search.component.less b/src/app/home-page/toolbox/search/search.component.less
index e69de29..01ed44c 100644
--- a/src/app/home-page/toolbox/search/search.component.less
+++ b/src/app/home-page/toolbox/search/search.component.less
@@ -0,0 +1,48 @@
+@import "../../../core/commons/variables";
+
+.toolbox-search {
+ align-items: center;
+ display: flex;
+ position: relative;
+ width: 400px;
+
+ &-icon {
+ position: absolute;
+ left: 14px;
+ transform: scale(-1, 1);
+ color: @color-gray3;
+ }
+
+ input {
+ width: 80%;
+ height: 35px;
+ padding-left: 40px;
+ border: 1px solid @color-gray2;
+ border-radius: 3px;
+ outline: none;
+ background: @color-white;
+ color: @color-black;
+ margin-right: 10px;
+ font-family: 'SourseSansPro Semibold';
+ font-size: 14px;
+ &::placeholder {
+ color: @color-gray2;
+ }
+ }
+
+ button {
+ width: 100px;
+ height: 37px;
+ border: none;
+ background: @color-green;
+ color: @color-white;
+ border-radius: 3px;
+ font-family: 'SourseSansPro Semibold';
+ font-size: 14px;
+ cursor: pointer;
+ outline: none;
+ &:hover {
+ background: @color-green1;
+ }
+ }
+}
diff --git a/src/app/home-page/toolbox/search/search.component.ts b/src/app/home-page/toolbox/search/search.component.ts
index e540d7d..ba137b9 100644
--- a/src/app/home-page/toolbox/search/search.component.ts
+++ b/src/app/home-page/toolbox/search/search.component.ts
@@ -1,8 +1,16 @@
import { Component } from '@angular/core';
+import { IconDefinition, faSearch } from '@fortawesome/free-solid-svg-icons';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.less']
})
-export class SearchComponent { }
+export class SearchComponent {
+ public faSearchIcon: IconDefinition = faSearch;
+ public searchResult: string = '';
+
+ public searchCourses(): void {
+ console.log(this.searchResult);
+ }
+}
diff --git a/src/app/home-page/toolbox/toolbox.component.html b/src/app/home-page/toolbox/toolbox.component.html
index 5750867..b2eea31 100644
--- a/src/app/home-page/toolbox/toolbox.component.html
+++ b/src/app/home-page/toolbox/toolbox.component.html
@@ -1 +1,4 @@
-toolbox works!
+
diff --git a/src/app/home-page/toolbox/toolbox.component.ts b/src/app/home-page/toolbox/toolbox.component.ts
index fb35349..47de0eb 100644
--- a/src/app/home-page/toolbox/toolbox.component.ts
+++ b/src/app/home-page/toolbox/toolbox.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component } from '@angular/core';
@Component({
selector: 'app-toolbox',
diff --git a/src/app/root/app-routing.module.ts b/src/app/root/app-routing.module.ts
index d425c6f..7222fdd 100644
--- a/src/app/root/app-routing.module.ts
+++ b/src/app/root/app-routing.module.ts
@@ -1,7 +1,12 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
+import { HomePageComponent } from '../home-page/home-page.component';
+import { CoursePageComponent } from '../course-page/course-page.component';
-const routes: Routes = [];
+const routes: Routes = [
+ { path: '', component: HomePageComponent },
+ { path: 'course-page', component: CoursePageComponent }
+];
@NgModule({
imports: [RouterModule.forRoot(routes)],
diff --git a/src/app/root/app.component.html b/src/app/root/app.component.html
index e7bb927..a826fdc 100644
--- a/src/app/root/app.component.html
+++ b/src/app/root/app.component.html
@@ -1,7 +1,8 @@
-
-
\ No newline at end of file
+
+
+
diff --git a/src/app/root/app.component.less b/src/app/root/app.component.less
index f6e19c4..c53e4ec 100644
--- a/src/app/root/app.component.less
+++ b/src/app/root/app.component.less
@@ -1,3 +1,15 @@
-.container {
- padding: 0 60px;
+@import "../core/commons/variables";
+
+.wrapper {
+ background-color: @color-gray;
+ min-height: calc(100% - 120px);
+}
+
+.breadcrumbs {
+ background-color: @color-white;
+ font-size: 14px;
+ font-family: 'SourseSansPro Semibold';
+ align-items: center;
+ display: flex;
+ height: 50px;
}
\ No newline at end of file
diff --git a/src/app/root/app.component.ts b/src/app/root/app.component.ts
index c279c2f..ea64448 100644
--- a/src/app/root/app.component.ts
+++ b/src/app/root/app.component.ts
@@ -5,6 +5,4 @@ import { Component } from '@angular/core';
templateUrl: './app.component.html',
styleUrls: ['./app.component.less']
})
-export class AppComponent {
- public title: string = 'angular-project';
-}
+export class AppComponent { }
diff --git a/src/app/root/app.module.ts b/src/app/root/app.module.ts
index 83b4834..7f39d32 100644
--- a/src/app/root/app.module.ts
+++ b/src/app/root/app.module.ts
@@ -7,6 +7,7 @@ import { CoreModule } from '../core/core.module';
import { LoginPageModule } from '../login-page/login-page.module';
import { HomePageModule } from '../home-page/home-page.module';
import { SharedModule } from '../shared/shared.module';
+import { CoursePageModule } from '../course-page/course-page.module';
@NgModule({
declarations: [
@@ -17,6 +18,7 @@ import { SharedModule } from '../shared/shared.module';
AppRoutingModule,
CoreModule,
SharedModule,
+ CoursePageModule,
LoginPageModule,
HomePageModule
],
diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html
index f72936d..4b1db74 100644
--- a/src/app/shared/footer/footer.component.html
+++ b/src/app/shared/footer/footer.component.html
@@ -1 +1,3 @@
-footer
+
diff --git a/src/app/shared/footer/footer.component.less b/src/app/shared/footer/footer.component.less
index e69de29..72bd95e 100644
--- a/src/app/shared/footer/footer.component.less
+++ b/src/app/shared/footer/footer.component.less
@@ -0,0 +1,12 @@
+@import '../../core/commons/variables';
+
+.footer {
+ align-items: center;
+ background-color: @color-black;
+ color: @color-white;
+ font-family: 'SourseSansPro Regular';
+ font-size: 14px;
+ height: 60px;
+ display: flex;
+ justify-content: flex-end;
+}
diff --git a/src/app/shared/header/header-login/header-login.component.html b/src/app/shared/header/header-login/header-login.component.html
index 885bcda..1032f21 100644
--- a/src/app/shared/header/header-login/header-login.component.html
+++ b/src/app/shared/header/header-login/header-login.component.html
@@ -1 +1,21 @@
-header-login!
+
diff --git a/src/app/shared/header/header-login/header-login.component.less b/src/app/shared/header/header-login/header-login.component.less
index e69de29..38db3c8 100644
--- a/src/app/shared/header/header-login/header-login.component.less
+++ b/src/app/shared/header/header-login/header-login.component.less
@@ -0,0 +1,22 @@
+@import "../../../core/commons/variables";
+
+.header-login {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ font-family: 'SourseSansPro Regular';
+ color: @color-white;
+ font-size: 14px;
+
+ &-username {
+ margin-right: 20px;
+ }
+
+ &-logoff {
+ text-decoration: none;
+ color: @color-white;
+ &:hover {
+ color: @color-gray1;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/app/shared/header/header-login/header-login.component.ts b/src/app/shared/header/header-login/header-login.component.ts
index f5c56ea..c31fb11 100644
--- a/src/app/shared/header/header-login/header-login.component.ts
+++ b/src/app/shared/header/header-login/header-login.component.ts
@@ -1,8 +1,12 @@
import { Component } from '@angular/core';
+import { IconDefinition, faUser, faArrowRight } from '@fortawesome/free-solid-svg-icons';
@Component({
selector: 'app-header-login',
templateUrl: './header-login.component.html',
styleUrls: ['./header-login.component.less']
})
-export class HeaderLoginComponent { }
+export class HeaderLoginComponent {
+ public faUserIcon: IconDefinition = faUser;
+ public faUserLogout: IconDefinition = faArrowRight;
+}
diff --git a/src/app/shared/header/header-logo/header-logo.component.html b/src/app/shared/header/header-logo/header-logo.component.html
index 85ede7c..bd10641 100644
--- a/src/app/shared/header/header-logo/header-logo.component.html
+++ b/src/app/shared/header/header-logo/header-logo.component.html
@@ -1 +1,3 @@
-header-logo
+
\ No newline at end of file
diff --git a/src/app/shared/header/header-logo/header-logo.component.less b/src/app/shared/header/header-logo/header-logo.component.less
index e69de29..6e085ce 100644
--- a/src/app/shared/header/header-logo/header-logo.component.less
+++ b/src/app/shared/header/header-logo/header-logo.component.less
@@ -0,0 +1,4 @@
+.header-logo {
+ display: flex;
+ height: 100%;
+}
diff --git a/src/app/shared/header/header.component.html b/src/app/shared/header/header.component.html
index 65b4c80..acfd219 100644
--- a/src/app/shared/header/header.component.html
+++ b/src/app/shared/header/header.component.html
@@ -1,8 +1,4 @@
-