|
|
@@ -1,329 +1,332 @@
|
|
|
-<div class="items-container animated fadeIn prevent-select" >
|
|
|
+<div class="main-container animated fadeIn prevent-select" (window:resize)="onResize()">
|
|
|
|
|
|
<app-btn-navigate navigate="goback" nameButton="Gestión de subcontratistas"/>
|
|
|
|
|
|
- <mat-card class="override-elevation-z8" style="width: 100%; height: 100%;">
|
|
|
-
|
|
|
- <app-loading-card
|
|
|
- [isLoading]="isLoading"
|
|
|
- [isLoadingForm]="isLoadingForm"
|
|
|
- [txtLoading]="'Cargando formulario... '"
|
|
|
- />
|
|
|
-
|
|
|
-
|
|
|
- <mat-card-title style="text-align: center; margin: 15px 0;" [style.visibility]="!isLoading ? 'visible' : 'hidden'" >
|
|
|
- {{ this.typeFormSubcontract.type === 'REG' ? 'Registrar Subcontratista' : 'Modificar Subcontratista' }}
|
|
|
- </mat-card-title>
|
|
|
- <mat-card-content [style.visibility]="isLoading ? 'visible' : 'hidden'">
|
|
|
-
|
|
|
- @if (!isLoading && hasError) {
|
|
|
- <div class="form-order-container">
|
|
|
- <div class="is-loading animated fadeIn fast">
|
|
|
- <mat-icon class="red_primary_font mb-40" >error</mat-icon>
|
|
|
- <h3>{{ errorStr }}</h3>
|
|
|
+ @if (!isLoading) {
|
|
|
+ <mat-card class="override-card override-elevation-z8">
|
|
|
+ <mat-card-title style="text-align: center; margin: 15px 0;" [style.visibility]="!isLoading ? 'visible' : 'hidden'" >
|
|
|
+ {{ this.typeFormSubcontract.type === 'REG' ? 'Registrar Subcontratista' : 'Modificar Subcontratista' }}
|
|
|
+ </mat-card-title>
|
|
|
+ <mat-card-content>
|
|
|
+ @if (!isLoading && hasError) {
|
|
|
+ <div class="form-order-container">
|
|
|
+ <div class="is-loading animated fadeIn fast">
|
|
|
+ <mat-icon class="red_primary_font mb-40" >error</mat-icon>
|
|
|
+ <h3>{{ errorStr }}</h3>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @if (!hasError) {
|
|
|
- <div class="form-order-container" [style.visibility]="!isLoading ? 'visible' : 'hidden'">
|
|
|
- <div class="form-column" [formGroup]="formGroup">
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_60: resourcesService.innerWidth() > 1000, fw_100: resourcesService.innerWidth() <= 1000 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Razón Social</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Razón Social" formControlName="socialReason" (input)="formGroup.controls['socialReason'].markAsTouched()">
|
|
|
- @if (formGroup.controls['socialReason'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['socialReason'].hasError('maxlength')) {
|
|
|
- <mat-error>La longitud máxima del campo es de 150 caracteres.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_40: resourcesService.innerWidth() > 1000, fw_100: resourcesService.innerWidth() <= 1000 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Régimen Fiscal</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Régimen Fiscal" [matAutocomplete]="autocompleteTaxRegime" formControlName="taxReference">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteTaxRegime>
|
|
|
- @for (taxRegimeStr of filteredTaxRegime | async; track taxRegimeStr) {
|
|
|
- <mat-option [value]="taxRegimeStr"> {{ taxRegimeStr }} </mat-option>
|
|
|
+ @if (!isLoading && !hasError) {
|
|
|
+ <div class="form-order-container">
|
|
|
+ <div class="form-column" [formGroup]="formGroup">
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_60: resourcesService.innerWidth() > 1000, fw_100: resourcesService.innerWidth() <= 1000 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Razón Social</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Razón Social" formControlName="socialReason" (input)="formGroup.controls['socialReason'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['socialReason'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
}
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['taxReference'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Tipo de Contribuyente</mat-label>
|
|
|
- <mat-select (ngModelChange)="onchangeType()" formControlName="contractType">
|
|
|
- <mat-option value="Persona física">Persona Física</mat-option>
|
|
|
- <mat-option value="Persona moral">Persona Moral</mat-option>
|
|
|
- </mat-select>
|
|
|
- @if (formGroup.controls['contractType'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Nacionalidad</mat-label>
|
|
|
- <mat-select (ngModelChange)="changeNationality()" formControlName="foreigner" #nat>
|
|
|
- <mat-option value="No">Nacional</mat-option>
|
|
|
- <mat-option value="Si">Extranjero</mat-option>
|
|
|
- </mat-select>
|
|
|
- @if (formGroup.controls['foreigner'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline">
|
|
|
- <mat-label>R.F.C.</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su R.F.C." oninput="javascript: this.value= this.value.toUpperCase();" formControlName="RFC"
|
|
|
- (input)="formGroup.controls['RFC'].markAsTouched()">
|
|
|
- @if (formGroup.controls['RFC'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['RFC'].hasError('minlength')) {
|
|
|
- <mat-error>Este campo debe tener al menos {{ taxLength }} caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['RFC'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo {{ taxLength }} caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['RFC'].hasError('pattern')) {
|
|
|
- <mat-error>El formato del RFC ingresado es inválido.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>TAX ID</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su TAX ID" oninput="javascript: this.value= this.value.toUpperCase();" formControlName="tax"
|
|
|
- (input)="formGroup.controls['tax'].markAsTouched()">
|
|
|
- @if (formGroup.controls['tax'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['tax'].hasError('minlength')) {
|
|
|
- <mat-error>Este campo debe tener al menos {{ taxLength }} caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['tax'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo {{ taxLength }} caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['tax'].hasError('pattern')) {
|
|
|
- <mat-error>El formato del TAX ID ingresado es inválido.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_66: resourcesService.innerWidth() > 1180, fw_100: resourcesService.innerWidth() <= 1180 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Correo Electrónico</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Correo Electrónico" formControlName="email" (input)="formGroup.controls['email'].markAsTouched()">
|
|
|
- @if (formGroup.controls['email'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['email'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 150 caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['email'].hasError('email')) {
|
|
|
- <mat-error>El formato del correo electrónico ingresado es inválido.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>País</mat-label>
|
|
|
- <input matInput formControlName="country" [matAutocomplete]="autocompleteCountry" id="country"
|
|
|
- (input)="checkIfAddress(country.value)" #country>
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteCountry (optionSelected)="checkIfAddress(country.value)">
|
|
|
- <mat-option *ngFor="let countryStr of filteredCountries | async" [value]="countryStr"
|
|
|
- [disabled]="(countryStr == 'México (MEX)' && nat.value == 'Si') || (countryStr != 'México (MEX)' && nat.value == 'No')">
|
|
|
- {{ countryStr }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['country'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingStates">
|
|
|
- <mat-label>Estado</mat-label>
|
|
|
- <input matInput formControlName="federalEntity" [matAutocomplete]="autocompleteState" id="state">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteState>
|
|
|
- <mat-option *ngFor="let stateStr of filteredStates | async" [value]="stateStr">
|
|
|
- {{ stateStr }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['federalEntity'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingStates"></mat-progress-bar>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingCities">
|
|
|
- <mat-label>Municipio</mat-label>
|
|
|
- <input matInput formControlName="city" [matAutocomplete]="autocompleteCity" id="city">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteCity>
|
|
|
- <mat-option *ngFor="let cityStr of filteredCities | async" [value]="cityStr">
|
|
|
- {{ cityStr }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['city'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingCities"></mat-progress-bar>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingTowns">
|
|
|
- <mat-label>Localidad</mat-label>
|
|
|
- <input matInput formControlName="town" [matAutocomplete]="autocompleteTown" id="town">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteTown>
|
|
|
- <mat-option *ngFor="let townStr of filteredTowns | async" [value]="townStr">
|
|
|
- {{ townStr }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['town'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ @if (formGroup.controls['socialReason'].hasError('maxlength')) {
|
|
|
+ <mat-error>La longitud máxima del campo es de 150 caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_40: resourcesService.innerWidth() > 1000, fw_100: resourcesService.innerWidth() <= 1000 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Régimen Fiscal</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Régimen Fiscal" [matAutocomplete]="autocompleteTaxRegime" formControlName="taxReference">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteTaxRegime>
|
|
|
+ @for (taxRegimeStr of filteredTaxRegime | async; track taxRegimeStr) {
|
|
|
+ <mat-option [value]="taxRegimeStr"> {{ taxRegimeStr }} </mat-option>
|
|
|
+ }
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['taxReference'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Tipo de Contribuyente</mat-label>
|
|
|
+ <mat-select (ngModelChange)="onchangeType()" formControlName="contractType">
|
|
|
+ <mat-option value="Persona física">Persona Física</mat-option>
|
|
|
+ <mat-option value="Persona moral">Persona Moral</mat-option>
|
|
|
+ </mat-select>
|
|
|
+ @if (formGroup.controls['contractType'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Nacionalidad</mat-label>
|
|
|
+ <mat-select (ngModelChange)="changeNationality()" formControlName="foreigner" #nat>
|
|
|
+ <mat-option value="No">Nacional</mat-option>
|
|
|
+ <mat-option value="Si">Extranjero</mat-option>
|
|
|
+ </mat-select>
|
|
|
+ @if (formGroup.controls['foreigner'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline">
|
|
|
+ <mat-label>R.F.C.</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su R.F.C." oninput="javascript: this.value= this.value.toUpperCase();" formControlName="RFC"
|
|
|
+ (input)="formGroup.controls['RFC'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['RFC'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['RFC'].hasError('minlength')) {
|
|
|
+ <mat-error>Este campo debe tener al menos {{ taxLength }} caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['RFC'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo {{ taxLength }} caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['RFC'].hasError('pattern')) {
|
|
|
+ <mat-error>El formato del RFC ingresado es inválido.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1180, fw_50: resourcesService.innerWidth() <= 1180 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>TAX ID</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su TAX ID" oninput="javascript: this.value= this.value.toUpperCase();" formControlName="tax"
|
|
|
+ (input)="formGroup.controls['tax'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['tax'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['tax'].hasError('minlength')) {
|
|
|
+ <mat-error>Este campo debe tener al menos {{ taxLength }} caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['tax'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo {{ taxLength }} caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['tax'].hasError('pattern')) {
|
|
|
+ <mat-error>El formato del TAX ID ingresado es inválido.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_66: resourcesService.innerWidth() > 1180, fw_100: resourcesService.innerWidth() <= 1180 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Correo Electrónico</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Correo Electrónico" formControlName="email" (input)="formGroup.controls['email'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['email'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['email'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo 150 caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['email'].hasError('email')) {
|
|
|
+ <mat-error>El formato del correo electrónico ingresado es inválido.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>País</mat-label>
|
|
|
+ <input matInput formControlName="country" [matAutocomplete]="autocompleteCountry" id="country"
|
|
|
+ (input)="checkIfAddress(country.value)" #country>
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteCountry (optionSelected)="checkIfAddress(country.value)">
|
|
|
+ <mat-option *ngFor="let countryStr of filteredCountries | async" [value]="countryStr"
|
|
|
+ [disabled]="(countryStr == 'México (MEX)' && nat.value == 'Si') || (countryStr != 'México (MEX)' && nat.value == 'No')">
|
|
|
+ {{ countryStr }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['country'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingStates">
|
|
|
+ <mat-label>Estado</mat-label>
|
|
|
+ <input matInput formControlName="federalEntity" [matAutocomplete]="autocompleteState" id="state">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteState>
|
|
|
+ <mat-option *ngFor="let stateStr of filteredStates | async" [value]="stateStr">
|
|
|
+ {{ stateStr }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['federalEntity'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingStates"></mat-progress-bar>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingCities">
|
|
|
+ <mat-label>Municipio</mat-label>
|
|
|
+ <input matInput formControlName="city" [matAutocomplete]="autocompleteCity" id="city">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteCity>
|
|
|
+ <mat-option *ngFor="let cityStr of filteredCities | async" [value]="cityStr">
|
|
|
+ {{ cityStr }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['city'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingCities"></mat-progress-bar>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingTowns">
|
|
|
+ <mat-label>Localidad</mat-label>
|
|
|
+ <input matInput formControlName="town" [matAutocomplete]="autocompleteTown" id="town">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteTown>
|
|
|
+ <mat-option *ngFor="let townStr of filteredTowns | async" [value]="townStr">
|
|
|
+ {{ townStr }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['town'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingTowns"></mat-progress-bar>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingSettings">
|
|
|
+ <mat-label>Colonia</mat-label>
|
|
|
+ <input matInput formControlName="suburb" [matAutocomplete]="autocompleteSetting" id="setting">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteSetting>
|
|
|
+ <mat-option *ngFor="let settingStr of filteredSettings | async" [value]="settingStr">
|
|
|
+ {{ settingStr }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['suburb'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingSettings"></mat-progress-bar>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingAddress">
|
|
|
+ <mat-label>Código Postal</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Código Postal" formControlName="postalCode" (input)="searchZipCode(zipCode.value)" #zipCode id="zipCode">
|
|
|
+ @if (formGroup.controls['postalCode'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingAddress"></mat-progress-bar>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_50: resourcesService.innerWidth() > 1320, fw_100: resourcesService.innerWidth() <= 1320 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Calle</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Calle" formControlName="street" (input)="formGroup.controls['street'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['street'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ @if (formGroup.controls['street'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo 150 caracteres.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Número Exterior</mat-label>
|
|
|
+ <input type="text" matInput placeholder="Ingrese su Número Exterior" formControlName="exteriorNumber"
|
|
|
+ (input)="formGroup.controls['exteriorNumber'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['exteriorNumber'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
}
|
|
|
- </mat-form-field>
|
|
|
- <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingTowns"></mat-progress-bar>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingSettings">
|
|
|
- <mat-label>Colonia</mat-label>
|
|
|
- <input matInput formControlName="suburb" [matAutocomplete]="autocompleteSetting" id="setting">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteSetting>
|
|
|
- <mat-option *ngFor="let settingStr of filteredSettings | async" [value]="settingStr">
|
|
|
- {{ settingStr }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['suburb'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ @if (formGroup.controls['exteriorNumber'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo 10 caracteres.</mat-error>
|
|
|
}
|
|
|
- </mat-form-field>
|
|
|
- <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingSettings"></mat-progress-bar>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100" *ngIf="!searchingAddress">
|
|
|
- <mat-label>Código Postal</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Código Postal" formControlName="postalCode" (input)="searchZipCode(zipCode.value)" #zipCode id="zipCode">
|
|
|
- @if (formGroup.controls['postalCode'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Número Interior</mat-label>
|
|
|
+ <input type="text" matInput placeholder="Ingrese su Número Interior" formControlName="interiorNumber"
|
|
|
+ (input)="formGroup.controls['interiorNumber'].markAsTouched()">
|
|
|
+ @if (formGroup.controls['interiorNumber'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo 10 caracteres.</mat-error>
|
|
|
}
|
|
|
- </mat-form-field>
|
|
|
- <mat-progress-bar mode="indeterminate" class="w-100" *ngIf="searchingAddress"></mat-progress-bar>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_50: resourcesService.innerWidth() > 1320, fw_100: resourcesService.innerWidth() <= 1320 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Calle</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Calle" formControlName="street" (input)="formGroup.controls['street'].markAsTouched()">
|
|
|
- @if (formGroup.controls['street'].hasError('required')) {
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_16: resourcesService.innerWidth() > 1000, fw_33: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Lada 1</mat-label>
|
|
|
+ <input matInput formControlName="lada1" [matAutocomplete]="autocompleteLada1">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteLada1>
|
|
|
+ <mat-option *ngFor="let lada1 of filteredLadas1 | async" [value]="lada1">
|
|
|
+ <img [src]="'assets/img/flags/' + flags.get(lada1) + '.png'" width="16px" height="16px" style="margin: 4px 4px 0 0;">{{ lada1 }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ @if (formGroup.controls['lada1'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1000, fw_66: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline">
|
|
|
+ <mat-label>Teléfono 1</mat-label>
|
|
|
+ <input matInput placeholder="Ingrese su Teléfono 1" formControlName="telephone1" type="number"
|
|
|
+ oninput="javascript: if (this.value.length> 11) this.value = this.value.slice(0, 11);">
|
|
|
+ @if (formGroup.controls['telephone1'].hasError('required')) {
|
|
|
<mat-error>Este campo es obligatorio.</mat-error>
|
|
|
}
|
|
|
- @if (formGroup.controls['street'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 150 caracteres.</mat-error>
|
|
|
+ @if (formGroup.controls['telephone1'].hasError('minlength')) {
|
|
|
+ <mat-error>Este debe tener al menos 7 caracteres.</mat-error>
|
|
|
}
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Número Exterior</mat-label>
|
|
|
- <input type="text" matInput placeholder="Ingrese su Número Exterior" formControlName="exteriorNumber"
|
|
|
- (input)="formGroup.controls['exteriorNumber'].markAsTouched()">
|
|
|
- @if (formGroup.controls['exteriorNumber'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['exteriorNumber'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 10 caracteres.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_25: resourcesService.innerWidth() > 1320, fw_50: resourcesService.innerWidth() <= 1320 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Número Interior</mat-label>
|
|
|
- <input type="text" matInput placeholder="Ingrese su Número Interior" formControlName="interiorNumber"
|
|
|
- (input)="formGroup.controls['interiorNumber'].markAsTouched()">
|
|
|
- @if (formGroup.controls['interiorNumber'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 10 caracteres.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_16: resourcesService.innerWidth() > 1000, fw_33: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Lada 1</mat-label>
|
|
|
- <input matInput formControlName="lada1" [matAutocomplete]="autocompleteLada1">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteLada1>
|
|
|
- <mat-option *ngFor="let lada1 of filteredLadas1 | async" [value]="lada1">
|
|
|
- <img [src]="'assets/img/flags/' + flags.get(lada1) + '.png'" width="16px" height="16px" style="margin: 4px 4px 0 0;">{{ lada1 }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- @if (formGroup.controls['lada1'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ @if (formGroup.controls['telephone1'].hasError('maxlength')) {
|
|
|
+ <mat-error>Este campo puede tener máximo 11 caracteres.</mat-error>
|
|
|
}
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1000, fw_66: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline">
|
|
|
- <mat-label>Teléfono 1</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Teléfono 1" formControlName="telephone1" type="number"
|
|
|
- oninput="javascript: if (this.value.length> 11) this.value = this.value.slice(0, 11);">
|
|
|
- @if (formGroup.controls['telephone1'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['telephone1'].hasError('minlength')) {
|
|
|
- <mat-error>Este debe tener al menos 7 caracteres.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['telephone1'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 11 caracteres.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_16: resourcesService.innerWidth() > 1000, fw_33: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline">
|
|
|
- <mat-label>Lada 2</mat-label>
|
|
|
- <input matInput formControlName="lada2" [matAutocomplete]="autocompleteLada2">
|
|
|
- <mat-autocomplete autoActiveFirstOption #autocompleteLada2>
|
|
|
- <mat-option *ngFor="let lada2 of filteredLadas2 | async" [value]="lada2">
|
|
|
- <img [src]="'assets/img/flags/' + flags.get(lada2) + '.png'" width="16px" height="16px" style="margin: 4px 4px 0 0;">{{ lada2 }}
|
|
|
- </mat-option>
|
|
|
- </mat-autocomplete>
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1000, fw_66: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
- <mat-form-field appearance="outline">
|
|
|
- <mat-label>Teléfono 2</mat-label>
|
|
|
- <input type="number" matInput placeholder="Ingrese su Teléfono 2" minlength="7" maxlength="10"
|
|
|
- type="number" oninput="javascript: if (this.value.length> this.maxLength) this.value = this.value.slice(0, this.maxLength);" formControlName="telephone2">
|
|
|
- </mat-form-field>
|
|
|
- </div>
|
|
|
- <div class="form-cell pt-8" [ngClass]="{ fw_50: resourcesService.innerWidth() > 1320, fw_100: resourcesService.innerWidth() <= 1320 }">
|
|
|
- <mat-form-field appearance="outline" class="w-100">
|
|
|
- <mat-label>Especialidad</mat-label>
|
|
|
- <input matInput placeholder="Ingrese su Calle" formControlName="specialty" (input)="formGroup.controls['specialty'].markAsTouched()">
|
|
|
- @if (formGroup.controls['specialty'].hasError('required')) {
|
|
|
- <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
- }
|
|
|
- @if (formGroup.controls['specialty'].hasError('maxlength')) {
|
|
|
- <mat-error>Este campo puede tener máximo 100 caracteres.</mat-error>
|
|
|
- }
|
|
|
- </mat-form-field>
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_16: resourcesService.innerWidth() > 1000, fw_33: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline">
|
|
|
+ <mat-label>Lada 2</mat-label>
|
|
|
+ <input matInput formControlName="lada2" [matAutocomplete]="autocompleteLada2">
|
|
|
+ <mat-autocomplete autoActiveFirstOption #autocompleteLada2>
|
|
|
+ <mat-option *ngFor="let lada2 of filteredLadas2 | async" [value]="lada2">
|
|
|
+ <img [src]="'assets/img/flags/' + flags.get(lada2) + '.png'" width="16px" height="16px" style="margin: 4px 4px 0 0;">{{ lada2 }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-autocomplete>
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_33: resourcesService.innerWidth() > 1000, fw_66: resourcesService.innerWidth() <= 1000 && resourcesService.innerWidth() > 720, fw_100: resourcesService.innerWidth() <= 720 }">
|
|
|
+ <mat-form-field appearance="outline">
|
|
|
+ <mat-label>Teléfono 2</mat-label>
|
|
|
+ <input type="number" matInput placeholder="Ingrese su Teléfono 2" minlength="7" maxlength="10"
|
|
|
+ type="number" oninput="javascript: if (this.value.length> this.maxLength) this.value = this.value.slice(0, this.maxLength);" formControlName="telephone2">
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
+ <div class="form-cell pt-8" [ngClass]="{ fw_50: resourcesService.innerWidth() > 1320, fw_100: resourcesService.innerWidth() <= 1320 }">
|
|
|
+ <mat-form-field appearance="outline" class="w-100">
|
|
|
+ <mat-label>Especialidades y/u oficios</mat-label>
|
|
|
+ <mat-select formControlName="specialty" multiple>
|
|
|
+ <mat-option *ngFor="let specialty of specialties" [value]="specialty.CODIGO_ESPECIALIDAD">
|
|
|
+ {{ specialty.NOMBRE_ESPECIALIDAD }}
|
|
|
+ </mat-option>
|
|
|
+ </mat-select>
|
|
|
+ @if (formGroup.controls['specialty'].hasError('required')) {
|
|
|
+ <mat-error>Este campo es obligatorio.</mat-error>
|
|
|
+ }
|
|
|
+ </mat-form-field>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ }
|
|
|
+ </mat-card-content>
|
|
|
+
|
|
|
+ @if (!isLoading) {
|
|
|
+ <mat-card-actions align="end">
|
|
|
+ <button mat-button (click)="this.alert()" [disabled]="formGroup.invalid || isLoadingForm">
|
|
|
+ <mat-icon>save</mat-icon> Guardar
|
|
|
+ </button>
|
|
|
+ </mat-card-actions>
|
|
|
}
|
|
|
- </mat-card-content>
|
|
|
- @if (!isLoading) {
|
|
|
- <mat-card-actions align="end">
|
|
|
- <button mat-button (click)="this.alert()" [disabled]="formGroup.invalid || isLoadingForm">
|
|
|
- <mat-icon>save</mat-icon> Guardar
|
|
|
- </button>
|
|
|
- </mat-card-actions>
|
|
|
- }
|
|
|
- </mat-card>
|
|
|
+ </mat-card>
|
|
|
+ } @else {
|
|
|
+ <mat-card class="override-card override-elevation-z8">
|
|
|
+ <app-loading-card
|
|
|
+ [isLoading]="isLoading"
|
|
|
+ [isLoadingForm]="isLoadingForm"
|
|
|
+ [txtLoading]="'Cargando la información del formulario'"
|
|
|
+ />
|
|
|
+ </mat-card>
|
|
|
+ }
|
|
|
</div>
|