Merge pull request '[Feature]: Registration Mask' (!2) from task/td-29-registration-form into trunk
Reviewed-on: #2 Reviewed-by: Snoweuph <snow+git@euph.email>
This commit is contained in:
commit
4e134a54ff
8 changed files with 80 additions and 11 deletions
|
@ -49,7 +49,7 @@
|
||||||
"stylelint-scss": "^6.11.0",
|
"stylelint-scss": "^6.11.0",
|
||||||
"typescript": "~5.6.2"
|
"typescript": "~5.6.2"
|
||||||
},
|
},
|
||||||
"api_version": "v0.0.0-rc.2",
|
"api_version": "v0.0.0-rc.3",
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "22.13.1"
|
"node": "22.13.1"
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { RouterOutlet } from '@angular/router';
|
||||||
import { HeaderComponent } from '@app/header/header.component';
|
import { HeaderComponent } from '@app/header/header.component';
|
||||||
import { NotificationBoxComponent } from '@app/notification-box/notification-box.component';
|
import { NotificationBoxComponent } from '@app/notification-box/notification-box.component';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
imports: [RouterOutlet, HeaderComponent, NotificationBoxComponent],
|
imports: [RouterOutlet, HeaderComponent, NotificationBoxComponent],
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { provideHttpClient } from '@angular/common/http';
|
||||||
import {ApplicationConfig, provideZoneChangeDetection} from '@angular/core';
|
import {ApplicationConfig, provideZoneChangeDetection} from '@angular/core';
|
||||||
import {provideAnimationsAsync} from '@angular/platform-browser/animations/async';
|
import {provideAnimationsAsync} from '@angular/platform-browser/animations/async';
|
||||||
import {provideRouter} from '@angular/router';
|
import {provideRouter} from '@angular/router';
|
||||||
|
import {BASE_PATH, Configuration} from '@core/server';
|
||||||
|
|
||||||
import {routes} from './app.routes';
|
import {routes} from './app.routes';
|
||||||
|
|
||||||
|
@ -11,5 +12,7 @@ export const appConfig: ApplicationConfig = {
|
||||||
provideAnimationsAsync(),
|
provideAnimationsAsync(),
|
||||||
provideRouter(routes),
|
provideRouter(routes),
|
||||||
provideHttpClient(),
|
provideHttpClient(),
|
||||||
|
Configuration,
|
||||||
|
{provide: BASE_PATH, useValue: 'http://localhost:8080/api/v1'}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
17
src/app/registration-form/registration-form.component.html
Normal file
17
src/app/registration-form/registration-form.component.html
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<form [formGroup]="registrationForm" class="registration-form">
|
||||||
|
<h2>Player Registration</h2>
|
||||||
|
|
||||||
|
<mat-form-field appearance="fill">
|
||||||
|
<mat-label>Username</mat-label>
|
||||||
|
<input formControlName="username" matInput type="text" required>
|
||||||
|
<mat-error> Username is required! </mat-error>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<mat-form-field appearance="fill">
|
||||||
|
<mat-label>Password</mat-label>
|
||||||
|
<input formControlName="password" matInput type="password" required>
|
||||||
|
<mat-error> Password is required! </mat-error>
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
|
<button mat-flat-button (click)="registerPlayer()">Register</button>
|
||||||
|
</form>
|
|
@ -0,0 +1,5 @@
|
||||||
|
.registration-form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
42
src/app/registration-form/registration-form.component.ts
Normal file
42
src/app/registration-form/registration-form.component.ts
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
import {Component} from '@angular/core';
|
||||||
|
import {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms';
|
||||||
|
import {MatButtonModule} from '@angular/material/button';
|
||||||
|
import {MatFormFieldModule} from '@angular/material/form-field';
|
||||||
|
import {MatInputModule} from '@angular/material/input';
|
||||||
|
import {MatSelectModule} from '@angular/material/select';
|
||||||
|
import {NotificationService, NotificationType} from '@core/notification/notification.service';
|
||||||
|
import {PlayerRegistrationData, ServerService} from '@core/server';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-registration-form',
|
||||||
|
imports: [MatFormFieldModule, FormsModule, MatSelectModule, MatInputModule, MatButtonModule, ReactiveFormsModule],
|
||||||
|
templateUrl: './registration-form.component.html',
|
||||||
|
styleUrl: './registration-form.component.scss',
|
||||||
|
standalone: true
|
||||||
|
})
|
||||||
|
export class RegistrationFormComponent {
|
||||||
|
registrationForm: FormGroup;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(private serverApi: ServerService, private formBuilder: FormBuilder, private notifications: NotificationService) {
|
||||||
|
this.registrationForm = this.formBuilder.group<PlayerRegistrationData>({
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
registerPlayer() {
|
||||||
|
if (!this.registrationForm.valid) {
|
||||||
|
this.notifications.publish('This form is invalid!', NotificationType.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.serverApi
|
||||||
|
.playerRegister(this.registrationForm.value)
|
||||||
|
.subscribe(() => {
|
||||||
|
this.notifications.publish('Registered successfully!', NotificationType.Information);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,3 +1,3 @@
|
||||||
<div class="dashboard">
|
<div class="dashboard">
|
||||||
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facere illo animi quidem repellat perspiciatis, excepturi amet corrupti ipsa sit consequuntur placeat ratione saepe velit asperiores suscipit esse quod minima exercitationem minus, alias laudantium inventore! Beatae cum nobis error suscipit cupiditate, praesentium itaque ut ipsa iusto in doloribus unde quisquam consequuntur.</p>
|
<app-registration-form></app-registration-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import {Component} from '@angular/core';
|
import {Component} from '@angular/core';
|
||||||
|
import {RegistrationFormComponent} from '@app/registration-form/registration-form.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-dashboard',
|
selector: 'app-dashboard',
|
||||||
imports: [],
|
imports: [RegistrationFormComponent],
|
||||||
templateUrl: './dashboard.component.html',
|
templateUrl: './dashboard.component.html',
|
||||||
styleUrl: './dashboard.component.scss'
|
styleUrl: './dashboard.component.scss'
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue