|
| 1 | +<!-- is-invalid --> |
| 2 | + |
| 3 | +<div class="container mt-5"> |
| 4 | + <div class="row"> |
| 5 | + <div class="col-6"> |
| 6 | + <div class="p-3 mb-5 mx-5 bg-body rounded"> |
| 7 | + <form class="row g-3" [formGroup]="addForm"> |
| 8 | + <!-- <div class="col-md-4"> |
| 9 | + <label for="validationCustom01" class="form-label">First name</label> |
| 10 | + <input type="text" class="form-control" id="validationCustom01" value="Mark" required> |
| 11 | + <div class="valid-feedback"> |
| 12 | + Looks good! |
| 13 | + </div> |
| 14 | +</div> |
| 15 | + <div class="col-md-3"> |
| 16 | + <label for="validationCustom05" class="form-label">Zip</label> |
| 17 | + <input type="text" class="form-control" id="validationCustom05" required> |
| 18 | +
|
| 19 | + </div> |
| 20 | + is-invalid --> |
| 21 | + |
| 22 | + <div class="col-md-6"> |
| 23 | + <label for="inputEmail4" class="form-label">Email</label> |
| 24 | + <input formControlName="Email" type="email" class="form-control" id="inputEmail4" /> |
| 25 | + <ng-container *ngIf="addForm.controls['Email'] as Email"> |
| 26 | + <ng-container *ngIf="Email.dirty || Email.touched"> |
| 27 | + <ng-container *ngIf="Email.errors as errorss"> |
| 28 | + <div *ngIf="errorss['required']" class="error"> |
| 29 | + Please Enter your Email! |
| 30 | + </div> |
| 31 | + </ng-container> |
| 32 | + </ng-container> |
| 33 | + </ng-container> |
| 34 | + </div> |
| 35 | + <div class="col-md-6"> |
| 36 | + <label for="inputEmail412" class="form-label">Last name</label> |
| 37 | + |
| 38 | + <input formControlName="Last_name" type="text" class="form-control" placeholder="Last name" |
| 39 | + aria-label="Last name" id="inputEmail412" /> |
| 40 | + |
| 41 | + <div *ngIf="addForm.controls['Last_name']?.errors?.['required']" class=""> |
| 42 | + Please Enter your Last_name! |
| 43 | + </div> |
| 44 | + </div> |
| 45 | + <div class="col-md-6"> |
| 46 | + <label for="inputEmail413" class="form-label is-invalid">First name</label> |
| 47 | + |
| 48 | + <input formControlName="First_name" type="text" class="form-control" placeholder="First name" |
| 49 | + aria-label="First name" id="inputEmail413" /> |
| 50 | + <ng-container *ngIf="addForm.controls['First_name'] as First_name"> |
| 51 | + <ng-container *ngIf="First_name.dirty || First_name.touched"> |
| 52 | + <ng-container *ngIf="First_name.errors as errors"> |
| 53 | + <div *ngIf="errors['required']" class="error"> |
| 54 | + Please Enter your frist name! |
| 55 | + </div> |
| 56 | + </ng-container> |
| 57 | + </ng-container> |
| 58 | + </ng-container> |
| 59 | + </div> |
| 60 | + |
| 61 | + <div class="col-md-6"> |
| 62 | + <label for="inputPassword4" class="form-label">Password</label> |
| 63 | + <input formControlName="Password" type="password" class="form-control" id="inputPassword4" /> |
| 64 | + <ng-container *ngIf="addForm.controls['Password'] as Password"> |
| 65 | + <ng-container *ngIf="Password.dirty || Password.touched"> |
| 66 | + <ng-container *ngIf="Password.errors as errorssss"> |
| 67 | + <div *ngIf="errorssss['required']" class="error"> |
| 68 | + Please Enter your Password! |
| 69 | + </div> |
| 70 | + </ng-container> |
| 71 | + </ng-container> |
| 72 | + </ng-container> |
| 73 | + </div> |
| 74 | + |
| 75 | + <div class="col-12"> |
| 76 | + <label for="inputAddress" class="form-label">Address</label> |
| 77 | + <input formControlName="Address" type="text" class="form-control" id="inputAddress" |
| 78 | + placeholder="1234 Main street YK UK NEW YORK" /> |
| 79 | + <ng-container *ngIf="addForm.controls['Address'] as Address"> |
| 80 | + <ng-container *ngIf="Address.dirty || Address.touched"> |
| 81 | + <ng-container *ngIf="Address.errors as errorsssss"> |
| 82 | + <div *ngIf="errorsssss['required']" class="error"> |
| 83 | + Please Enter your Address! |
| 84 | + </div> |
| 85 | + </ng-container> |
| 86 | + </ng-container> |
| 87 | + </ng-container> |
| 88 | + </div> |
| 89 | + <div class="col-12"> |
| 90 | + <label for="inputAddress2" class="form-label">Address 2</label> |
| 91 | + <input formControlName="Address_2" type="text" class="form-control" id="inputAddress2" |
| 92 | + placeholder="Apartment, studio, or floor" /> |
| 93 | + <ng-container *ngIf="addForm.controls['Address_2'] as Address_2"> |
| 94 | + <ng-container *ngIf="Address_2.dirty || Address_2.touched"> |
| 95 | + <ng-container *ngIf="Address_2.errors as errorssssss"> |
| 96 | + <div *ngIf="errorssssss['required']" class="error"> |
| 97 | + Please Enter your Address 2! |
| 98 | + </div> |
| 99 | + </ng-container> |
| 100 | + </ng-container> |
| 101 | + </ng-container> |
| 102 | + </div> |
| 103 | + <div class="col-md-6"> |
| 104 | + <label for="inputCity" class="form-label">City</label> |
| 105 | + <input formControlName="City" type="text" class="form-control" id="inputCity" /> |
| 106 | + <ng-container *ngIf="addForm.controls['City'] as City"> |
| 107 | + <ng-container *ngIf="City.dirty || City.touched"> |
| 108 | + <ng-container *ngIf="City.errors as errorsssssssss"> |
| 109 | + <div *ngIf="errorsssssssss['required']" class="error"> |
| 110 | + Please Enter your City! |
| 111 | + </div> |
| 112 | + </ng-container> |
| 113 | + </ng-container> |
| 114 | + </ng-container> |
| 115 | + </div> |
| 116 | + <div class="col-md-4"> |
| 117 | + <label for="inputState" class="form-label">State</label> |
| 118 | + <select formControlName="State" id="inputState" class="form-select"> |
| 119 | + <option selected value="0"></option> |
| 120 | + <option value="1">tanger</option> |
| 121 | + <option value="2">titwan</option> |
| 122 | + <option value="3">husima</option> |
| 123 | + </select> |
| 124 | + |
| 125 | + <ng-container *ngIf="addForm.controls['State'] as State"> |
| 126 | + <ng-container *ngIf="State.dirty || State.touched"> |
| 127 | + <ng-container *ngIf="State.errors as errorsssssss"> |
| 128 | + <div *ngIf="errorsssssss['required']" class="error"> |
| 129 | + Please Enter your State! |
| 130 | + </div> |
| 131 | + </ng-container> |
| 132 | + </ng-container> |
| 133 | + </ng-container> |
| 134 | + </div> |
| 135 | + <div class="col-md-2"> |
| 136 | + <label for="inputZip" class="form-label">Zip</label> |
| 137 | + <input formControlName="Zip" type="text" class="form-control" id="inputZip" /> |
| 138 | + <ng-container *ngIf="addForm.controls['Zip'] as Zip"> |
| 139 | + <ng-container *ngIf="Zip.dirty || Zip.touched"> |
| 140 | + <ng-container *ngIf="Zip.errors as errorssssssss"> |
| 141 | + <div *ngIf="errorssssssss['required']" class="error"> |
| 142 | + Please Enter your Zip! |
| 143 | + </div> |
| 144 | + </ng-container> |
| 145 | + </ng-container> |
| 146 | + </ng-container> |
| 147 | + </div> |
| 148 | + |
| 149 | + <div class="col-12"> |
| 150 | + <div class="form-check"> |
| 151 | + <input formControlName="Check_me_out" class="form-check-input" type="checkbox" id="gridCheck" /> |
| 152 | + {{ addForm.controls["Check_me_out"].errors | json }} |
| 153 | + |
| 154 | + <ng-container *ngIf="addForm.controls['Check_me_out'] as Check_me_out"> |
| 155 | + <ng-container *ngIf="Check_me_out.dirty || Check_me_out.touched"> |
| 156 | + <ng-container *ngIf="Check_me_out.errors as errorssssssssjs"> |
| 157 | + <div *ngIf="errorssssssssjs['required']" class="error"> |
| 158 | + Please Enter your Check me out! |
| 159 | + </div> |
| 160 | + </ng-container> |
| 161 | + </ng-container> |
| 162 | + </ng-container> |
| 163 | + |
| 164 | + <label class="form-check-label" for="gridCheck"> |
| 165 | + Check me out |
| 166 | + </label> |
| 167 | + </div> |
| 168 | + </div> |
| 169 | + |
| 170 | + <div class="col-12"> |
| 171 | + <button [disabled]=" |
| 172 | + !(addForm.value && (addForm.dirty || addForm.touched)) |
| 173 | + " [ngClass]=" |
| 174 | + addForm.value && (addForm.dirty || addForm.touched) |
| 175 | + ? 'btn-primary' |
| 176 | + : 'btn-danger' |
| 177 | + " type="submit" class="btn"> |
| 178 | + Sign in |
| 179 | + </button> |
| 180 | + </div> |
| 181 | + </form> |
| 182 | + </div> |
| 183 | + </div> |
| 184 | + |
| 185 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 186 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 187 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 188 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 189 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 190 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 191 | + <!---||||||||||||||||||||||\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\||||||||||||||||||\\--> |
| 192 | + |
| 193 | + <div class="col"> |
| 194 | + <div class="accordion shadow p-3 mb-5 bg-body rounded ml-5" id="accordionExample"> |
| 195 | + <div class="accordion-item"> |
| 196 | + <h2 class="accordion-header" id="headingOne"> |
| 197 | + <button (click)="status1 = !status1" [ngClass]="status1 ? '' : 'collapsed'" type="button" |
| 198 | + class="accordion-button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" |
| 199 | + aria-controls="collapseOne"> |
| 200 | + First name |
| 201 | + </button> |
| 202 | + </h2> |
| 203 | + <div id="collapseOne" [ngClass]="status1 ? 'show' : ''" class="accordion-collapse collapse" |
| 204 | + aria-labelledby="headingOne" data-bs-parent="#accordionExample"> |
| 205 | + <div class="accordion-body">dfdhhfdg</div> |
| 206 | + </div> |
| 207 | + </div> |
| 208 | + |
| 209 | + <div class="accordion-item"> |
| 210 | + <h2 class="accordion-header" id="headingTwo"> |
| 211 | + <button (click)="status2 = !status2" [ngClass]="status2 ? '' : 'collapsed'" |
| 212 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 213 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 214 | + Last name |
| 215 | + </button> |
| 216 | + </h2> |
| 217 | + <div id="collapseTwo" [ngClass]="status2 ? 'show' : ''" class="accordion-collapse collapse" |
| 218 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 219 | + <div class="accordion-body">fgsdfgdsfg</div> |
| 220 | + </div> |
| 221 | + </div> |
| 222 | + |
| 223 | + <div class="accordion-item"> |
| 224 | + <h2 class="accordion-header" id="headingTwo"> |
| 225 | + <button (click)="status3 = !status3" [ngClass]="status3 ? '' : 'collapsed'" |
| 226 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 227 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 228 | + Email |
| 229 | + </button> |
| 230 | + </h2> |
| 231 | + <div id="collapseTwo" [ngClass]="status3 ? 'show' : ''" class="accordion-collapse collapse" |
| 232 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 233 | + <div class="accordion-body">dfsgsdfgsdf</div> |
| 234 | + </div> |
| 235 | + </div> |
| 236 | + |
| 237 | + <div class="accordion-item"> |
| 238 | + <h2 class="accordion-header" id="headingTwo"> |
| 239 | + <button (click)="status4 = !status4" [ngClass]="status4 ? '' : 'collapsed'" |
| 240 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 241 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 242 | + Password |
| 243 | + </button> |
| 244 | + </h2> |
| 245 | + <div id="collapseTwo" [ngClass]="status4 ? 'show' : ''" class="accordion-collapse collapse" |
| 246 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 247 | + <div class="accordion-body">dfgsdf</div> |
| 248 | + </div> |
| 249 | + </div> |
| 250 | + |
| 251 | + <div class="accordion-item"> |
| 252 | + <h2 class="accordion-header" id="headingTwo"> |
| 253 | + <button (click)="status5 = !status5" [ngClass]="status5 ? '' : 'collapsed'" |
| 254 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 255 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 256 | + Address |
| 257 | + </button> |
| 258 | + </h2> |
| 259 | + <div id="collapseTwo" [ngClass]="status5 ? '' : 'show'" class="accordion-collapse collapse" |
| 260 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 261 | + <div class="accordion-body">dsgsdfg</div> |
| 262 | + </div> |
| 263 | + </div> |
| 264 | + |
| 265 | + <div class="accordion-item"> |
| 266 | + <h2 class="accordion-header" id="headingTwo"> |
| 267 | + <button (click)="status6 = !status6" [ngClass]="status6 ? '' : 'collapsed'" |
| 268 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 269 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 270 | + Address 2 |
| 271 | + </button> |
| 272 | + </h2> |
| 273 | + <div id="collapseTwo" [ngClass]="status6 ? 'show' : ''" class="accordion-collapse collapse" |
| 274 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 275 | + <div class="accordion-body">sdfgsd</div> |
| 276 | + </div> |
| 277 | + </div> |
| 278 | + <div class="accordion-item"> |
| 279 | + <h2 class="accordion-header" id="headingTwo"> |
| 280 | + <button (click)="status7 = !status7" [ngClass]="status7 ? '' : 'collapsed'" |
| 281 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 282 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 283 | + City |
| 284 | + </button> |
| 285 | + </h2> |
| 286 | + <div id="collapseTwo" [ngClass]="status7 ? 'show' : ''" class="accordion-collapse collapse" |
| 287 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 288 | + <div class="accordion-body">sdfgsdfg</div> |
| 289 | + </div> |
| 290 | + </div> |
| 291 | + <div class="accordion-item"> |
| 292 | + <h2 class="accordion-header" id="headingTwo"> |
| 293 | + <button (click)="status8 = !status8" [ngClass]="status8 ? '' : 'collapsed'" |
| 294 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 295 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 296 | + State |
| 297 | + </button> |
| 298 | + </h2> |
| 299 | + <div id="collapseTwo" [ngClass]="status8 ? 'show' : ''" class="accordion-collapse collapse" |
| 300 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 301 | + <div class="accordion-body">dfsgsdfg</div> |
| 302 | + </div> |
| 303 | + </div> |
| 304 | + <div class="accordion-item"> |
| 305 | + <h2 class="accordion-header" id="headingTwo"> |
| 306 | + <button (click)="status9 = !status9" [ngClass]="status9 ? '' : 'collapsed'" |
| 307 | + class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" |
| 308 | + aria-expanded="false" aria-controls="collapseTwo"> |
| 309 | + Zip |
| 310 | + </button> |
| 311 | + </h2> |
| 312 | + <div id="collapseTwo" [ngClass]="status9 ? 'show' : ''" class="accordion-collapse collapse" |
| 313 | + aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> |
| 314 | + <div class="bg-dark accordion-body">dsfgsdf</div> |
| 315 | + </div> |
| 316 | + </div> |
| 317 | + </div> |
| 318 | + </div> |
| 319 | + <div class="col"> |
| 320 | + <div *ngIf="( |
| 321 | +
|
| 322 | + addForm.dirty |
| 323 | + && addForm.controls['Last_name'].errors?.['required'] |
| 324 | + && addForm.controls['First_name'].errors?.['required'] |
| 325 | + && addForm.controls['Email'].errors?.['required'] |
| 326 | + && addForm.controls['Password'].errors?.['required'] |
| 327 | + && addForm.controls['Address'].errors?.['required'] |
| 328 | + && addForm.controls['Address_2'].errors?.['required'] |
| 329 | + && addForm.controls['City'].errors?.['required'] |
| 330 | + && addForm.controls['State'].errors?.['required'] |
| 331 | + )" class="alert alert-danger" role="alert"> |
| 332 | + the form is invalid |
| 333 | + </div> |
| 334 | + |
| 335 | + <div *ngIf="( |
| 336 | +
|
| 337 | + addForm.dirty |
| 338 | + && !addForm.controls['Last_name']?.errors?.['required'] |
| 339 | + && !addForm.controls['First_name']?.errors?.['required'] |
| 340 | + && !addForm.controls['Email']?.errors?.['required'] |
| 341 | + && !addForm.controls['Password']?.errors?.['required'] |
| 342 | + && !addForm.controls['Address']?.errors?.['required'] |
| 343 | + && !addForm.controls['Address_2']?.errors?.['required'] |
| 344 | + && !addForm.controls['City']?.errors?.['required'] |
| 345 | + && !addForm.controls['State']?.errors?.['required'] |
| 346 | + )" class="alert alert-success" role="alert"> |
| 347 | + the form is all valid |
| 348 | + </div> |
| 349 | + |
| 350 | + <div class="form-floating"> |
| 351 | + <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2" style="height: 300px"> |
| 352 | + |
| 353 | + {{ addForm.value | json }} |
| 354 | + </textarea> |
| 355 | + </div> |
| 356 | + </div> |
| 357 | + </div> |
| 358 | +</div> |
0 commit comments