autocomit

This commit is contained in:
2026-02-08 12:16:21 +01:00
parent cc79baeb09
commit 0c1f696849
16 changed files with 1821 additions and 108 deletions
@@ -0,0 +1,92 @@
<div class="container">
<h1>{{ isEditMode ? 'Edit Application' : 'Create New Application' }}</h1>
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<div class="form-group">
<label for="name">Name *</label>
<input
id="name"
type="text"
formControlName="name"
[class.error]="form.get('name')?.invalid && form.get('name')?.touched"
/>
<div class="error-message" *ngIf="form.get('name')?.invalid && form.get('name')?.touched">
<span *ngIf="form.get('name')?.errors?.['required']">Name is required</span>
<span *ngIf="form.get('name')?.errors?.['maxlength']">Name must not exceed 255 characters</span>
</div>
</div>
<div class="form-group">
<label for="description">Description</label>
<textarea
id="description"
formControlName="description"
rows="4"
></textarea>
</div>
<div class="form-group">
<label for="status">Status *</label>
<select
id="status"
formControlName="status"
[class.error]="form.get('status')?.invalid && form.get('status')?.touched"
>
<option *ngFor="let status of statusOptions" [value]="status">
{{ getStatusDisplay(status) }}
</option>
</select>
<div class="error-message" *ngIf="form.get('status')?.invalid && form.get('status')?.touched">
Status is required
</div>
</div>
<div class="form-group">
<label for="businessUnitId">Business Unit *</label>
<select
id="businessUnitId"
formControlName="businessUnitId"
[class.error]="form.get('businessUnitId')?.invalid && form.get('businessUnitId')?.touched"
>
<option value="">Select a business unit</option>
<option *ngFor="let bu of businessUnits" [value]="bu.id">
{{ bu.name }}
</option>
</select>
<div class="error-message" *ngIf="form.get('businessUnitId')?.invalid && form.get('businessUnitId')?.touched">
Business unit is required
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="endOfSupportDate">End of Support Date</label>
<input
id="endOfSupportDate"
type="date"
formControlName="endOfSupportDate"
/>
</div>
<div class="form-group">
<label for="endOfLifeDate">End of Life Date</label>
<input
id="endOfLifeDate"
type="date"
formControlName="endOfLifeDate"
/>
</div>
</div>
<div class="error-message" *ngIf="error">
{{ error }}
</div>
<div class="form-actions">
<button type="button" (click)="cancel()" class="btn-secondary">Cancel</button>
<button type="submit" [disabled]="form.invalid || loading" class="btn-primary">
{{ loading ? 'Saving...' : 'Save' }}
</button>
</div>
</form>
</div>
@@ -0,0 +1,98 @@
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
h1 {
margin-bottom: 2rem;
}
}
form {
background: white;
padding: 2rem;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 1.5rem;
label {
display: block;
margin-bottom: 0.5rem;
font-weight: 500;
color: #555;
}
input[type="text"],
input[type="date"],
select,
textarea {
width: 100%;
padding: 0.75rem;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 1rem;
font-family: inherit;
&:focus {
outline: none;
border-color: #3f51b5;
}
&.error {
border-color: #f44336;
}
}
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.form-actions {
display: flex;
gap: 1rem;
justify-content: flex-end;
margin-top: 2rem;
}
.btn-primary, .btn-secondary {
padding: 0.75rem 1.5rem;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
}
.btn-primary {
background-color: #3f51b5;
color: white;
&:hover:not(:disabled) {
background-color: #303f9f;
}
&:disabled {
background-color: #ccc;
cursor: not-allowed;
}
}
.btn-secondary {
background-color: #f5f5f5;
color: #333;
&:hover {
background-color: #e0e0e0;
}
}
.error-message {
color: #f44336;
font-size: 0.875rem;
margin-top: 0.25rem;
}
@@ -0,0 +1,11 @@
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-application-form',
standalone: true,
imports: [CommonModule],
template: `<div class="container"><h1>Application Form</h1><p class="info-message">️ Coming in Story 2</p></div>`,
styles: [`.container { max-width: 1200px; margin: 2rem auto; padding: 2rem; } .info-message { background: #e3f2fd; padding: 1rem; border-radius: 4px; }`]
})
export class ApplicationFormComponent {}