diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 087641c..87d779e 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,4 +1,11 @@ -import {Routes} from '@angular/router'; -import {DashboardComponent} from '@app/views/dashboard/dashboard.component'; +import { Routes } from '@angular/router'; +import { DashboardComponent } from '@app/views/dashboard/dashboard.component'; +import { AuthService } from '@core/auth/auth.service'; -export const routes: Routes = [{path: '', component: DashboardComponent, title: 'Home'}]; +import { EmployeeDetailComponent } from './views/employee-detail/employee-detail.component'; + +export const routes: Routes = [ + { path: '', component: DashboardComponent, title: 'Home' }, + { path: 'employee/new', component: EmployeeDetailComponent, title: 'New Employee', canActivate: [AuthService] }, + { path: 'employee/:id', component: EmployeeDetailComponent, title: 'Edit Employee', canActivate: [AuthService] } +]; diff --git a/src/app/views/employee-detail/employee-detail.component.html b/src/app/views/employee-detail/employee-detail.component.html new file mode 100644 index 0000000..2bbc985 --- /dev/null +++ b/src/app/views/employee-detail/employee-detail.component.html @@ -0,0 +1,82 @@ +
diff --git a/src/app/views/employee-detail/employee-detail.component.scss b/src/app/views/employee-detail/employee-detail.component.scss new file mode 100644 index 0000000..4946223 --- /dev/null +++ b/src/app/views/employee-detail/employee-detail.component.scss @@ -0,0 +1,82 @@ +@use '@angular/material' as mat; + +.employee-detail { + display: flex; + flex-direction: column; + gap: 1rem; + + &__info-view { + display: flex; + gap: 2rem; + + >* { + min-width: 0; + flex-basis: 0; + flex-grow: 1; + } + + &__base { + display: flex; + flex-direction: column; + + input { + font-size: var(--mat-sys-body-large-size); + } + } + + &__skills { + height: fit-content; + width: 100%; + + &__action-row { + display: flex; + gap: 1rem; + + mat-form-field:first-of-type { + flex-grow: 1; + } + } + + p { + font-size: var(--mat-sys-body-large-size); + margin: 0; + } + + tr { + height: 76px; + + td.mat-column-skill { + width: 100%; + padding-top: 28px; + padding-bottom: 28px; + } + + td.mat-column-action { + width: 0; + vertical-align: middle; + padding-left: 24px; + padding-right: 8px; + } + + &:first-of-type { + height: 66px; + + td.mat-column-skill { + padding-top: 0; + padding-bottom: 0; + } + + td.mat-column-action { + padding-top: 10px; + vertical-align: unset; + } + } + } + } + } + + &__action-row { + display: flex; + justify-content: space-between; + } +} diff --git a/src/app/views/employee-detail/employee-detail.component.ts b/src/app/views/employee-detail/employee-detail.component.ts new file mode 100644 index 0000000..dd7fa2d --- /dev/null +++ b/src/app/views/employee-detail/employee-detail.component.ts @@ -0,0 +1,83 @@ +import { AsyncPipe } from '@angular/common'; +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIcon } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { ActivatedRoute, RouterLink } from '@angular/router'; +import { Employee, EmployeeService, Qualification, QualificationService } from '@core/ems'; +import { map, Observable } from 'rxjs'; + +@Component({ + selector: 'app-employee-detail', + imports: [ + AsyncPipe, + MatIcon, + RouterLink, + MatButtonModule, + MatInputModule, + MatSelectModule, + MatTableModule, + MatFormFieldModule, + ReactiveFormsModule, + ], + templateUrl: './employee-detail.component.html', + styleUrl: './employee-detail.component.scss' +}) +export class EmployeeDetailComponent { + isNewEmployee: boolean; + employeeForm: FormGroup; + skillsDataSource: MatTableDataSource