|
1 | | -<!-- TODO: Validate all validators! Make sure they make sense --> |
2 | 1 | <form (ngSubmit)="onSubmit()" #applicationForm="ngForm" class="os2-form p-3 mt-4"> |
3 | 2 | <div *ngIf="errorMessages" class="error-messages p-3"> |
4 | 3 | <ul class="mb-0"> |
|
35 | 34 | </mat-select> |
36 | 35 | </div> |
37 | 36 |
|
38 | | - <!-- TODO: Fix styling --> |
39 | 37 | <div class="form-group mt-3"> |
40 | 38 | <label class="form-label" for="metadata.startDate">{{'APPLICATION.METADATA-FIELD.START-DATE' | translate}}</label> |
41 | 39 | <mat-form-field appearance="fill"> |
42 | 40 | <mat-label>{{'QUESTION.APPLICATION.START-DATE-PLACEHOLDER' | translate}}</mat-label> |
43 | 41 | <input matInput [min]="today" [max]="serializedEndDate.value" [matDatepicker]="startDatePicker" |
44 | | - [formControl]="serializedStartDate"> |
| 42 | + [formControl]="serializedStartDate" |
| 43 | + [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.startDate'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.startDate')}"> |
45 | 44 | <mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle> |
46 | 45 | <mat-datepicker panelClass="datepicker-table-fix" #startDatePicker></mat-datepicker> |
47 | 46 | </mat-form-field> |
|
52 | 51 | <mat-form-field appearance="fill" [ngClass]="'datepicker-table-fix'"> |
53 | 52 | <mat-label>{{'QUESTION.APPLICATION.END-DATE-PLACEHOLDER' | translate}}</mat-label> |
54 | 53 | <input matInput [min]="serializedStartDate.value" [matDatepicker]="endDatePicker" |
55 | | - [formControl]="serializedEndDate"> |
| 54 | + [formControl]="serializedEndDate" |
| 55 | + [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.endDate'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.endDate')}"> |
56 | 56 | <mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle> |
57 | 57 | <mat-datepicker panelClass="datepicker-table-fix" #endDatePicker></mat-datepicker> |
58 | 58 | </mat-form-field> |
|
61 | 61 | <div class="form-group mt-3"> |
62 | 62 | <label class="form-label" for="metadata.category">{{'APPLICATION.METADATA-FIELD.CATEGORY' | translate}}</label> |
63 | 63 | <input type="text" class="form-control" id="category" name="category" |
64 | | - [placeholder]="'QUESTION.APPLICATION.CATEGORY-PLACEHOLDER' | translate" maxlength="50" required |
| 64 | + [placeholder]="'QUESTION.APPLICATION.CATEGORY-PLACEHOLDER' | translate" maxlength="100" |
65 | 65 | [(ngModel)]="metadata.category" |
66 | 66 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.category'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.category')}"> |
67 | 67 | </div> |
68 | 68 |
|
69 | 69 | <div class="form-group mt-3"> |
70 | 70 | <label class="form-label" for="metadata.owner">{{'APPLICATION.METADATA-FIELD.OWNER' | translate}}</label> |
71 | 71 | <input type="text" class="form-control" id="owner" name="owner" |
72 | | - [placeholder]="'QUESTION.APPLICATION.OWNER-PLACEHOLDER' | translate" maxlength="50" required |
| 72 | + [placeholder]="'QUESTION.APPLICATION.OWNER-PLACEHOLDER' | translate" maxlength="100" |
73 | 73 | [(ngModel)]="metadata.owner" |
74 | 74 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.owner'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.owner')}"> |
75 | 75 | </div> |
|
78 | 78 | <label class="form-label" for="metadata.contactPerson">{{'APPLICATION.METADATA-FIELD.CONTACT-PERSON' | |
79 | 79 | translate}}</label> |
80 | 80 | <input type="text" class="form-control" id="contactPerson" name="contactPerson" |
81 | | - [placeholder]="'QUESTION.APPLICATION.CONTACT-PERSON-PLACEHOLDER' | translate" maxlength="50" required |
| 81 | + [placeholder]="'QUESTION.APPLICATION.CONTACT-PERSON-PLACEHOLDER' | translate" maxlength="100" |
82 | 82 | [(ngModel)]="metadata.contactPerson" |
83 | 83 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.contactPerson'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.contactPerson')}"> |
84 | 84 | </div> |
85 | 85 |
|
86 | | - <!-- TODO: Validate email. God, not this shit... --> |
87 | 86 | <div class="form-group mt-3"> |
88 | | - <label class="form-label" for="metadata.contactEmail">{{'APPLICATION.METADATA-FIELD.CONTACT-EMAIL' | translate}}</label> |
89 | | - <input type="text" class="form-control" id="contactEmail" name="contactEmail" |
90 | | - [placeholder]="'QUESTION.APPLICATION.CONTACT-EMAIL-PLACEHOLDER' | translate" maxlength="50" required |
| 87 | + <label class="form-label" for="metadata.contactEmail">{{'APPLICATION.METADATA-FIELD.CONTACT-EMAIL' | |
| 88 | + translate}}</label> |
| 89 | + <input type="email" class="form-control" id="contactEmail" name="contactEmail" |
| 90 | + [placeholder]="'QUESTION.APPLICATION.CONTACT-EMAIL-PLACEHOLDER' | translate" maxlength="50" [email]="true" |
91 | 91 | [(ngModel)]="metadata.contactEmail" |
92 | 92 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.contactEmail'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.contactEmail')}"> |
93 | 93 | </div> |
94 | 94 |
|
95 | | - <!-- TODO: Validate phone. --> |
96 | 95 | <div class="form-group mt-3"> |
97 | | - <label class="form-label" for="metadata.contactPhone">{{'APPLICATION.METADATA-FIELD.CONTACT-PHONE' | translate}}</label> |
98 | | - <input type="text" class="form-control" id="contactPhone" name="contactPhone" |
99 | | - [placeholder]="'QUESTION.APPLICATION.CONTACT-PHONE-PLACEHOLDER' | translate" maxlength="50" required |
| 96 | + <label class="form-label" for="metadata.contactPhone">{{'APPLICATION.METADATA-FIELD.CONTACT-PHONE' | |
| 97 | + translate}}</label> |
| 98 | + <input type="text" class="form-control" id="contactPhone" name="contactPhone" [formControl]="phoneCtrl" |
| 99 | + [placeholder]="'QUESTION.APPLICATION.CONTACT-PHONE-PLACEHOLDER' | translate" maxlength="12" |
100 | 100 | [(ngModel)]="metadata.contactPhone" |
101 | | - [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.contactPhone'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.contactPhone')}"> |
| 101 | + [ngClass]="{'is-invalid' : metadata.contactPhone && phoneCtrl.invalid, 'is-valid' : !phoneCtrl.invalid}"> |
102 | 102 | </div> |
103 | 103 |
|
104 | 104 | <div class="form-group mt-3"> |
105 | | - <mat-checkbox id="metadata.personalData" name="metadata.personalData" |
106 | | - [(ngModel)]="metadata.personalData"> |
| 105 | + <mat-checkbox id="metadata.personalData" name="metadata.personalData" [(ngModel)]="metadata.personalData"> |
107 | 106 | <mat-label for="metadata.personalData" class="form-check-label text--bold margin-top-25px" |
108 | 107 | style="white-space: initial">{{'QUESTION.APPLICATION.PERSONAL-DATA-PLACEHOLDER' | translate}}</mat-label> |
109 | 108 | </mat-checkbox> |
|
122 | 121 | translate}}</label> |
123 | 122 | <mat-select class="form-control" name="metadata.controlledProperty" multiple="true" |
124 | 123 | [(ngModel)]="metadata.controlledProperty" |
| 124 | + [placeholder]="'QUESTION.APPLICATION.CONTROLLED-PROPERTY-PLACEHOLDER' | translate" |
125 | 125 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.controlledProperty'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.controlledProperty')}"> |
126 | 126 | <mat-option *ngFor="let ctrlProperty of controlledProperties" [value]="ctrlProperty"> |
127 | 127 | {{ctrlProperty}} |
|
130 | 130 | </div> |
131 | 131 |
|
132 | 132 | <div class="form-group mt-3"> |
133 | | - <label class="form-label" for="metadata.deviceType">{{'APPLICATION.METADATA-FIELD.DEVICE-TYPE' | translate}}</label> |
134 | | - <mat-select class="form-control" name="metadata.deviceType" multiple="true" |
135 | | - [(ngModel)]="metadata.deviceType" |
| 133 | + <label class="form-label" for="metadata.deviceType">{{'APPLICATION.METADATA-FIELD.DEVICE-TYPE' | |
| 134 | + translate}}</label> |
| 135 | + <mat-select class="form-control" name="metadata.deviceType" multiple="true" [(ngModel)]="metadata.deviceType" |
| 136 | + [placeholder]="'QUESTION.APPLICATION.DEVICE-TYPE-PLACEHOLDER' | translate" |
136 | 137 | [ngClass]="{'is-invalid' : formFailedSubmit && errorFields.includes('metadata.deviceType'), 'is-valid' : formFailedSubmit && !errorFields.includes('metadata.deviceType')}"> |
137 | 138 | <mat-option *ngFor="let deviceType of deviceTypes" [value]="deviceType.value"> |
138 | 139 | {{deviceType.label}} |
|
0 commit comments