iptdevs-design-system 3.1.995 → 3.1.998

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@ import { CurrencyMaskModule } from 'ng2-currency-mask';
5
5
  import * as i1 from '@angular/common';
6
6
  import { CommonModule, CurrencyPipe, TitleCasePipe } from '@angular/common';
7
7
  import * as i2 from 'primeng/api';
8
- import { ConfirmationService, MessageService } from 'primeng/api';
8
+ import { MessageService } from 'primeng/api';
9
9
  import * as i7$3 from 'primeng/tabview';
10
10
  import { TabViewModule } from 'primeng/tabview';
11
11
  import * as i1$1 from '@angular/forms';
@@ -1857,13 +1857,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
1857
1857
  }] });
1858
1858
 
1859
1859
  class updateUserFormComponent {
1860
- constructor(fb, cdr, parameterService, baseService, userService, confirmationService) {
1860
+ constructor(fb, cdr, parameterService, baseService, userService) {
1861
1861
  this.fb = fb;
1862
1862
  this.cdr = cdr;
1863
1863
  this.parameterService = parameterService;
1864
1864
  this.baseService = baseService;
1865
1865
  this.userService = userService;
1866
- this.confirmationService = confirmationService;
1867
1866
  this.visibleModal = false;
1868
1867
  this.closeModalIS = new EventEmitter();
1869
1868
  this.userUpdatedEvent = new EventEmitter();
@@ -1883,15 +1882,12 @@ class updateUserFormComponent {
1883
1882
  this.genders = [];
1884
1883
  this.stratums = [];
1885
1884
  this.showConfirmDialog = false;
1885
+ this.userRoleCommercial = false;
1886
1886
  // userUpdated = false;
1887
1887
  this.initialFormValue = [];
1888
1888
  this.pendingInit = false;
1889
1889
  this.isStudent = false;
1890
1890
  this.justifyOptions = [];
1891
- // justifyOptions: any[] = [
1892
- // { name: 'Activo', code: 1 },
1893
- // { name: 'Removido', code: 4 }
1894
- // ];
1895
1891
  this.reasons = [
1896
1892
  { name: 'Corrección de errores en datos personales', code: 1 },
1897
1893
  { name: 'Correccion de documentacion', code: 2 },
@@ -1899,10 +1895,12 @@ class updateUserFormComponent {
1899
1895
  { name: 'correccion datos de Acudiente', code: 4 },
1900
1896
  { name: 'Cambio de contraseña', code: 5 },
1901
1897
  { name: 'Cambio de residencia', code: 6 },
1902
- { name: 'Otro', code: 7 }
1898
+ { name: 'Suspensión o reactivación de cuenta', code: 7 },
1899
+ { name: 'Otro', code: 8 }
1903
1900
  ];
1904
1901
  this.initForm();
1905
1902
  this.initConfirmForm();
1903
+ this.validationUserRole();
1906
1904
  }
1907
1905
  ngOnInit() {
1908
1906
  this.getParameters();
@@ -1915,6 +1913,7 @@ class updateUserFormComponent {
1915
1913
  this.initializeForm();
1916
1914
  this.setJustifyOptions();
1917
1915
  this.trackIdTypeChanges();
1916
+ this.validationUserRole();
1918
1917
  this.cdr.detectChanges();
1919
1918
  }
1920
1919
  else {
@@ -2092,21 +2091,21 @@ class updateUserFormComponent {
2092
2091
  transformRole(role) {
2093
2092
  const roleMap = {
2094
2093
  1: 'Super Admin',
2095
- 10: 'Jefe Academico',
2094
+ 10: 'Lider Academico',
2096
2095
  11: 'Coordinador Academico',
2097
2096
  12: 'Teacher Academico',
2098
2097
  13: 'Estudiante',
2099
2098
  15: 'Posible Estudiante',
2100
- 20: 'Jefe Marketing',
2099
+ 20: 'Lider Marketing',
2101
2100
  21: 'Coordinador Marketing',
2102
2101
  22: 'Auxiliar Marketing',
2103
- 30: 'Jefe Administrativo',
2102
+ 30: 'Lider Administrativo',
2104
2103
  31: 'Coordinador Administrativo',
2105
2104
  32: 'Auxiliar Administrativo',
2106
- 40: 'Jefe Comercial',
2105
+ 40: 'Lider Comercial',
2107
2106
  41: 'Coordinador Comercial',
2108
2107
  42: 'Asesor Comercial',
2109
- 50: 'Jefe Cartera',
2108
+ 50: 'Lider Cartera',
2110
2109
  51: 'Coordinador Cartera',
2111
2110
  52: 'Asesor Cartera',
2112
2111
  60: 'Proveedor'
@@ -2192,6 +2191,15 @@ class updateUserFormComponent {
2192
2191
  }
2193
2192
  }
2194
2193
  }
2194
+ validationUserRole() {
2195
+ const userRole = this.baseService.getUserRole();
2196
+ if (userRole == 40 || userRole == 41 || userRole == 42) {
2197
+ this.userRoleCommercial = true;
2198
+ }
2199
+ else {
2200
+ this.userRoleCommercial = false;
2201
+ }
2202
+ }
2195
2203
  closeTable() {
2196
2204
  this.visibleModal = false;
2197
2205
  this.showConfirmDialog = false;
@@ -2206,7 +2214,7 @@ class updateUserFormComponent {
2206
2214
  trackIdTypeChanges() {
2207
2215
  var _a;
2208
2216
  if (this.idTypeSubscription) {
2209
- this.idTypeSubscription.unsubscribe(); // Unsub old sub before new one (safe for recreation)
2217
+ this.idTypeSubscription.unsubscribe();
2210
2218
  }
2211
2219
  this.idTypeSubscription = (_a = this.updateUserForm.get('id_card_type')) === null || _a === void 0 ? void 0 : _a.valueChanges.subscribe(value => {
2212
2220
  this.updateIdCardValidators(value);
@@ -2339,20 +2347,6 @@ class updateUserFormComponent {
2339
2347
  selectReason(reason) {
2340
2348
  this.confirmForm.controls['reason'].setValue(reason ? reason : null);
2341
2349
  }
2342
- setPhoto(type) {
2343
- if (type === 'student')
2344
- this.photo = '/platform/academic/assets/student.jpg';
2345
- if (type === 'academic')
2346
- this.photo = '/platform/academic/assets/academico.png';
2347
- if (type === 'administrative')
2348
- this.photo = '/platform/administrative/assets/administrativo.jpg';
2349
- if (type === 'marketing')
2350
- this.photo = '/platform/marketing/assets/marketing.jpg';
2351
- if (type === 'commercial')
2352
- this.photo = '/platform/commercial/assets/user-form-assets/comercial.jpg';
2353
- if (type === 'treasure')
2354
- this.photo = '/platform/treasure/assets/administrativo.jpg';
2355
- }
2356
2350
  // updateUser(): void {
2357
2351
  // if (
2358
2352
  // this.updateUserForm.invalid ||
@@ -2669,16 +2663,16 @@ class updateUserFormComponent {
2669
2663
  var _a, _b;
2670
2664
  this.showConfirmDialog = false;
2671
2665
  this.confirmForm.reset();
2672
- (_a = this.confirmForm.get('reason')) === null || _a === void 0 ? void 0 : _a.setValue(null);
2666
+ (_a = this.confirmForm.get('reason')) === null || _a === void 0 ? void 0 : _a.setValue('');
2673
2667
  (_b = this.confirmForm.get('observation')) === null || _b === void 0 ? void 0 : _b.setValue('');
2674
2668
  }
2675
2669
  }
2676
- updateUserFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: updateUserFormComponent, deps: [{ token: i1$1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: ParameterService }, { token: BaseService }, { token: UserService }, { token: i2.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
2677
- updateUserFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: updateUserFormComponent, selector: "ipt-update-user-form", inputs: { DataStudent: "DataStudent", visibleModal: "visibleModal" }, outputs: { closeModalIS: "closeModalIS", userUpdatedEvent: "userUpdatedEvent" }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<main *ngIf=\"visibleModal\">\n <div class=\"modal_container\">\n <div class=\"header_modal yellow-300\">\n <h1>Actualizar usuario</h1>\n <button (click)=\"closeTable()\">x</button>\n </div>\n <div class=\"grid_container\">\n <div>\n <form *ngIf=\"updateUserForm\" autocomplete=\"off\" [formGroup]=\"updateUserForm\">\n <!-- User Information Section -->\n <div class=\"section-header\">\n <h2>Informaci\u00F3n del usuario</h2>\n </div>\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['name']\"\n [validateText]=\"updateUserForm.controls['name'].hasError('required') ? 'Debe ingresar el nombre' :\n updateUserForm.controls['name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['last_name']\"\n [validateText]=\"updateUserForm.controls['last_name'].hasError('required') ? 'Debe ingresar los apellidos' :\n updateUserForm.controls['last_name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['last_name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['last_name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['last_name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['last_name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['email']\"\n [validateText]=\"updateUserForm.controls['email'].hasError('required') ? 'Debe ingresar un correo v\u00E1lido' :\n updateUserForm.controls['email'].hasError('maxlength') ? 'M\u00E1ximo 300 caracteres' :\n updateUserForm.controls['email'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email IPT'\"\n [control]=\"updateUserForm.controls['email_ipt']\"\n [validateText]=\"updateUserForm.controls['email_ipt'].hasError('required') ? 'Debe ingresar un correo IPT v\u00E1lido' :\n updateUserForm.controls['email_ipt'].hasError('maxlength') ? 'M\u00E1ximo 255 caracteres' :\n updateUserForm.controls['email_ipt'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email_ipt'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email_ipt'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo IPT v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'number'\"\n [placeHolder]=\"'Horas de servicio'\"\n [control]=\"updateUserForm.controls['service_hour']\"\n [validateText]=\"'Debe ingresar las horas de servicio'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['gender'].value\"\n [control]=\"updateUserForm.controls['gender']\"\n [selectCode]=\"updateUserForm.controls['gender'].value === null ? 'Seleccione g\u00E9nero' : (updateUserForm.controls['gender'].value | genderDisplay)\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'Seleccione g\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['phone_indicative'].value\"\n [control]=\"updateUserForm.controls['phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['id_card_type'].value\"\n [control]=\"updateUserForm.controls['id_card_type']\"\n [selectCode]=\"updateUserForm.controls['id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['id_card']\"\n [validateText]=\"updateUserForm.controls['id_card'].hasError('required') ? 'Debe ingresar el n\u00FAmero de documento' :\n updateUserForm.controls['id_card'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['id_card'].hasError('maxlength') ? 'M\u00E1ximo 20 caracteres' :\n updateUserForm.controls['id_card'].hasError('pattern') ? (updateUserForm.controls['id_card_type'].value === 7 || updateUserForm.controls['id_card_type'].value === 5 ? 'Solo letras y n\u00FAmeros permitidos' : 'Solo n\u00FAmeros permitidos') :\n 'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['country'].value\"\n [control]=\"updateUserForm.controls['country']\"\n [selectCode]=\"updateUserForm.controls['country'].value === null ? 'Pa\u00EDs de residencia' : updateUserForm.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['state'].value\"\n [control]=\"updateUserForm.controls['state']\"\n [selectCode]=\"updateUserForm.controls['state'].value === null ? 'Departamento o estado' : updateUserForm.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['city'].value\"\n [control]=\"updateUserForm.controls['city']\"\n [selectCode]=\"updateUserForm.controls['city'].value === null ? 'Ciudad de residencia' : updateUserForm.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div class=\"card-status\">\n <span class=\"span-status\">Estado</span>\n <p-selectButton \n [options]=\"justifyOptions\" \n formControlName=\"status\" \n optionLabel=\"name\" \n optionValue=\"code\">\n </p-selectButton>\n </div>\n <div class=\"field\">\n <p-checkbox\n formControlName=\"changePassword\"\n label=\"Cambio de contrase\u00F1a\"\n [binary]=\"true\"\n ></p-checkbox>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"updateUserForm.controls['changePassword'].value\">\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['password']\"\n [validateText]=\"updateUserForm.controls['password'].hasError('required') ? 'La contrase\u00F1a es requerida' :\n updateUserForm.controls['password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n 'Ingrese una contrase\u00F1a v\u00E1lida'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['re_password']\"\n [validateText]=\"updateUserForm.controls['re_password'].hasError('required') ? 'Debe repetir la contrase\u00F1a' :\n updateUserForm.controls['re_password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['re_password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.hasError('mismatch') ? 'Las contrase\u00F1as no coinciden' :\n 'Repita la contrase\u00F1a'\"\n ></ipt-input>\n </div>\n\n <!-- Mensaje adicional para el error de mismatch (opcional, si quieres mostrarlo por separado) -->\n\n <div *ngIf=\"updateUserForm.hasError('mismatch') && updateUserForm.controls['changePassword'].value\" class=\"error-message\">\n <small >Las contrase\u00F1as no coinciden</small>\n </div>\n <!-- Parent Information Section -->\n <div class=\"section-header\" *ngIf=\"DataStudent?.cods\">\n <h2>Informaci\u00F3n del acudiente</h2>\n </div>\n <div *ngIf=\"DataStudent?.cods\">\n <div *ngIf=\"showParentSection; else noParentMessage\">\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['parent_name']\"\n [validateText]=\"'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['parent_last_name']\"\n [validateText]=\"'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"updateUserForm.controls['parent_occupation']\"\n [validateText]=\"'Debe ingresar la ocupaci\u00F3n'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['parent_email']\"\n [validateText]=\"'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_id_card_type'].value\"\n [control]=\"updateUserForm.controls['parent_id_card_type']\"\n [selectCode]=\"updateUserForm.controls['parent_id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['parent_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('parent_id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['parent_id_card']\"\n [validateText]=\"'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_phone_indicative'].value\"\n [control]=\"updateUserForm.controls['parent_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('parent_phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['parent_phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n de oficina'\"\n [control]=\"updateUserForm.controls['parent_office_adrress']\"\n [validateText]=\"'Debe ingresar la direcci\u00F3n'\"\n ></ipt-input>\n </div>\n </div>\n <ng-template #noParentMessage>\n <div class=\"no-parent-message\">\n <p>Sin acudiente</p>\n </div>\n </ng-template>\n </div>\n <div class=\"buttons-container\">\n <div class=\"buttons-container-inner\">\n <ipt-button\n [buttonType]=\"'button'\"\n [label]=\"'Cerrar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeTable()\"\n ></ipt-button>\n\n <ipt-button\n [label]=\"'Actualizar'\"\n [isEnabled]=\"!loader && updateUserForm.valid && !updateUserForm.hasError('mismatch') && hasFormChanged()\"\n (onClick)=\"showConfirmDialogs()\"\n [primary]=\"true\"\n ></ipt-button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n\n <!-- Confirm Dialog para raz\u00F3n y observaci\u00F3n -->\n<p-dialog\n header=\"Confirmar Ajuste de Usuario\"\n [(visible)]=\"showConfirmDialog\"\n [modal]=\"true\"\n (onHide)=\"closeConfirmDialog()\"\n >\n <form [formGroup]=\"confirmForm\" class=\"confirm-form\">\n <div class=\"p-field\">\n <ipt-select\n [initialValue]=\"confirmForm.controls['reason'].value\"\n [control]=\"confirmForm.controls['reason']\"\n [data]=\"reasons\"\n optionLabel=\"name\"\n (eventSelect)=\"selectReason($event)\"\n [defaultText]=\"'Seleccione la raz\u00F3n'\"\n ></ipt-select>\n <small *ngIf=\"confirmForm.controls['reason'].invalid && confirmForm.controls['reason'].touched\" class=\"p-error\">\n La raz\u00F3n es requerida\n </small>\n </div>\n <div class=\"p-field\">\n <label class=\"container-observation\">Observaci\u00F3n</label>\n <textarea\n id=\"observation\"\n pInputTextarea\n formControlName=\"observation\"\n rows=\"3\"\n placeholder=\"Describe detalles adicionales del ajuste\"\n ></textarea>\n <small *ngIf=\"confirmForm.controls['observation'].invalid && confirmForm.controls['observation'].touched\" class=\"p-error\">\n La observaci\u00F3n es requerida\n </small>\n </div>\n </form>\n <p-footer>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Cancelar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeConfirmDialog()\"\n ></ipt-button>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Confirmar'\"\n [primary]=\"true\"\n [isEnabled]=\"confirmForm.valid\"\n (onClick)=\"acceptConfirmDialog()\"\n ></ipt-button>\n </p-footer>\n</p-dialog>\n\n</main>", styles: ["@media screen and (min-width: 320px){main{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s}main .modal_container{width:90%;height:-moz-fit-content;height:fit-content;max-height:90vh;overflow-y:auto;position:fixed;inset:0;margin:auto;background-color:#fff;border-radius:5px}.header_modal{display:flex;padding:15px 15px 0;gap:1rem;align-items:center}.header_modal h1{padding:.5rem;background-color:#1c77f7;color:#fff;width:100%;border-radius:10px;font-size:1.25rem;font-weight:700}.header_modal button{margin-left:auto;font-size:26px;padding:1.2rem;font-weight:200;color:#6c7f7d;display:flex;width:25px;height:25px;align-items:center;justify-content:center;transition:50ms;background-color:transparent;border:none}.header_modal button:hover{cursor:pointer;border-radius:50%;background-color:#d4d4d4}.grid_container{display:grid;grid-template-columns:1fr;padding:0 15px}form{display:grid;grid-template-columns:1fr;gap:.25rem;justify-content:center;padding:0 1rem}.section-header{margin:1.5rem 0 .5rem;border-bottom:2px solid #1c77f7}.section-header h2{font-size:1.2rem;color:#1c77f7;font-weight:600;margin-bottom:.5rem}.form-grid{display:grid;grid-template-columns:1fr;gap:0px .25rem}.buttons-container{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:flex-end;align-items:center;flex-direction:row}.buttons-container-inner{gap:1rem;width:auto;display:flex}.user-type-image{display:none}.no-parent-message{padding:1rem;text-align:center;color:#666;font-size:1rem;font-weight:500;background-color:#f8f9fa;border-radius:.5rem;margin-top:.5rem}}@media screen and (min-width: 768px){.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0px 1rem}}@media screen and (min-width: 1366px){form{padding:0}}.field{margin-top:15px;height:1px;max-width:70%;font-family:Poppins,sans-serif;color:#000;font-size:.875rem}.error-message{color:red;font-size:12px;margin-top:5px}:host ::ng-deep .p-selectbutton{display:flex;flex-wrap:wrap;justify-content:center;width:100%;min-width:10rem}:host ::ng-deep .p-selectbutton .p-button{padding:.5rem;font-size:.875rem;height:30px}:host ::ng-deep .p-buttonset .p-button:first-of-type{height:30px}.span-status{font-family:Poppins,sans-serif;color:#999;font-size:15px;font-weight:400;pointer-events:none;transition:.2s ease all;margin-left:9px}.card-status{margin-top:15px}:host ::ng-deep .p-field{margin-bottom:1.5rem}.p-error{color:red;font-size:.8rem}.confirm-form{display:flex;flex-direction:column;gap:1rem;font-family:Poppins,sans-serif}:host ::ng-deep .p-confirm-dialog .p-dialog-content{padding:1.5rem}:host ::ng-deep .p-confirm-dialog .p-dialog-footer{display:flex;justify-content:flex-end;gap:1rem}:host ::ng-deep .p-dialog{width:45%!important}.container-observation{width:100%;font-family:Poppins,sans-serif;color:#1c77f7;font-size:15px;font-weight:400;pointer-events:none}textarea{box-shadow:#64646f33 0 7px 29px;border-radius:3px;outline:none;display:block;transition:.2s;font-weight:300;font-family:Poppins,sans-serif;width:-webkit-fill-available;width:-moz-available;padding-left:10px;background-color:#fff;-webkit-appearance:none;max-height:80px;font-size:14px;max-width:100%}textarea::placeholder{color:#999;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none}textarea::focus textarea:focus-visible{color:#999;font-size:15px;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none;border:#1c77f7 1px solid;outline:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.Footer, selector: "p-footer" }, { kind: "component", type: i7.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "tabindex", "multiple", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: i8.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "component", type: i9.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "label", "control"], outputs: ["eventSelect"] }, { kind: "pipe", type: GenderDisplayPipe, name: "genderDisplay" }] });
2670
+ updateUserFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: updateUserFormComponent, deps: [{ token: i1$1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: ParameterService }, { token: BaseService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Component });
2671
+ updateUserFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: updateUserFormComponent, selector: "ipt-update-user-form", inputs: { DataStudent: "DataStudent", visibleModal: "visibleModal" }, outputs: { closeModalIS: "closeModalIS", userUpdatedEvent: "userUpdatedEvent" }, providers: [], usesOnChanges: true, ngImport: i0, template: "<main *ngIf=\"visibleModal\">\n <div class=\"modal_container\">\n <div class=\"header_modal yellow-300\">\n <h1>Actualizar usuario</h1>\n <button (click)=\"closeTable()\">x</button>\n </div>\n <div class=\"grid_container\">\n <div>\n <form *ngIf=\"updateUserForm\" autocomplete=\"off\" [formGroup]=\"updateUserForm\">\n <!-- User Information Section -->\n <div class=\"section-header\">\n <h2>Informaci\u00F3n del usuario</h2>\n </div>\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['name']\"\n [validateText]=\"updateUserForm.controls['name'].hasError('required') ? 'Debe ingresar el nombre' :\n updateUserForm.controls['name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['last_name']\"\n [validateText]=\"updateUserForm.controls['last_name'].hasError('required') ? 'Debe ingresar los apellidos' :\n updateUserForm.controls['last_name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['last_name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['last_name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['last_name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['last_name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['email']\"\n [validateText]=\"updateUserForm.controls['email'].hasError('required') ? 'Debe ingresar un correo v\u00E1lido' :\n updateUserForm.controls['email'].hasError('maxlength') ? 'M\u00E1ximo 300 caracteres' :\n updateUserForm.controls['email'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email IPT'\"\n [control]=\"updateUserForm.controls['email_ipt']\"\n [validateText]=\"updateUserForm.controls['email_ipt'].hasError('required') ? 'Debe ingresar un correo IPT v\u00E1lido' :\n updateUserForm.controls['email_ipt'].hasError('maxlength') ? 'M\u00E1ximo 255 caracteres' :\n updateUserForm.controls['email_ipt'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email_ipt'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email_ipt'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo IPT v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'number'\"\n [placeHolder]=\"'Horas de servicio'\"\n [control]=\"updateUserForm.controls['service_hour']\"\n [validateText]=\"'Debe ingresar las horas de servicio'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['gender'].value\"\n [control]=\"updateUserForm.controls['gender']\"\n [selectCode]=\"updateUserForm.controls['gender'].value === null ? 'Seleccione g\u00E9nero' : (updateUserForm.controls['gender'].value | genderDisplay)\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'Seleccione g\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['phone_indicative'].value\"\n [control]=\"updateUserForm.controls['phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['id_card_type'].value\"\n [control]=\"updateUserForm.controls['id_card_type']\"\n [selectCode]=\"updateUserForm.controls['id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['id_card']\"\n [validateText]=\"updateUserForm.controls['id_card'].hasError('required') ? 'Debe ingresar el n\u00FAmero de documento' :\n updateUserForm.controls['id_card'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['id_card'].hasError('maxlength') ? 'M\u00E1ximo 20 caracteres' :\n updateUserForm.controls['id_card'].hasError('pattern') ? (updateUserForm.controls['id_card_type'].value === 7 || updateUserForm.controls['id_card_type'].value === 5 ? 'Solo letras y n\u00FAmeros permitidos' : 'Solo n\u00FAmeros permitidos') :\n 'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['country'].value\"\n [control]=\"updateUserForm.controls['country']\"\n [selectCode]=\"updateUserForm.controls['country'].value === null ? 'Pa\u00EDs de residencia' : updateUserForm.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['state'].value\"\n [control]=\"updateUserForm.controls['state']\"\n [selectCode]=\"updateUserForm.controls['state'].value === null ? 'Departamento o estado' : updateUserForm.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['city'].value\"\n [control]=\"updateUserForm.controls['city']\"\n [selectCode]=\"updateUserForm.controls['city'].value === null ? 'Ciudad de residencia' : updateUserForm.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div class=\"card-status\">\n <span class=\"span-status\">Estado</span>\n <p-selectButton \n [options]=\"justifyOptions\" \n formControlName=\"status\" \n optionLabel=\"name\" \n optionValue=\"code\">\n </p-selectButton>\n </div>\n <div *ngIf=\"!userRoleCommercial\" class=\"field\">\n <p-checkbox\n formControlName=\"changePassword\"\n label=\"Cambio de contrase\u00F1a\"\n [binary]=\"true\"\n ></p-checkbox>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"updateUserForm.controls['changePassword'].value\">\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['password']\"\n [validateText]=\"updateUserForm.controls['password'].hasError('required') ? 'La contrase\u00F1a es requerida' :\n updateUserForm.controls['password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n 'Ingrese una contrase\u00F1a v\u00E1lida'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['re_password']\"\n [validateText]=\"updateUserForm.controls['re_password'].hasError('required') ? 'Debe repetir la contrase\u00F1a' :\n updateUserForm.controls['re_password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['re_password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.hasError('mismatch') ? 'Las contrase\u00F1as no coinciden' :\n 'Repita la contrase\u00F1a'\"\n ></ipt-input>\n </div>\n\n <!-- Mensaje adicional para el error de mismatch (opcional, si quieres mostrarlo por separado) -->\n\n <div *ngIf=\"updateUserForm.hasError('mismatch') && updateUserForm.controls['changePassword'].value\" class=\"error-message\">\n <small >Las contrase\u00F1as no coinciden</small>\n </div>\n <!-- Parent Information Section -->\n <div class=\"section-header\" *ngIf=\"DataStudent?.cods\">\n <h2>Informaci\u00F3n del acudiente</h2>\n </div>\n <div *ngIf=\"DataStudent?.cods\">\n <div *ngIf=\"showParentSection; else noParentMessage\">\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['parent_name']\"\n [validateText]=\"'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['parent_last_name']\"\n [validateText]=\"'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"updateUserForm.controls['parent_occupation']\"\n [validateText]=\"'Debe ingresar la ocupaci\u00F3n'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['parent_email']\"\n [validateText]=\"'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_id_card_type'].value\"\n [control]=\"updateUserForm.controls['parent_id_card_type']\"\n [selectCode]=\"updateUserForm.controls['parent_id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['parent_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('parent_id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['parent_id_card']\"\n [validateText]=\"'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_phone_indicative'].value\"\n [control]=\"updateUserForm.controls['parent_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('parent_phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['parent_phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n de oficina'\"\n [control]=\"updateUserForm.controls['parent_office_adrress']\"\n [validateText]=\"'Debe ingresar la direcci\u00F3n'\"\n ></ipt-input>\n </div>\n </div>\n <ng-template #noParentMessage>\n <div class=\"no-parent-message\">\n <p>Sin acudiente</p>\n </div>\n </ng-template>\n </div>\n <div class=\"buttons-container\">\n <div class=\"buttons-container-inner\">\n <ipt-button\n [buttonType]=\"'button'\"\n [label]=\"'Cerrar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeTable()\"\n ></ipt-button>\n\n <ipt-button\n [label]=\"'Actualizar'\"\n [isEnabled]=\"!loader && updateUserForm.valid && !updateUserForm.hasError('mismatch') && hasFormChanged()\"\n (onClick)=\"showConfirmDialogs()\"\n [primary]=\"true\"\n ></ipt-button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n\n <!-- Confirm Dialog para raz\u00F3n y observaci\u00F3n -->\n<p-dialog\n header=\"Confirmar Ajuste de Usuario\"\n [(visible)]=\"showConfirmDialog\"\n [modal]=\"true\"\n (onHide)=\"closeConfirmDialog()\"\n >\n <form [formGroup]=\"confirmForm\" class=\"confirm-form\">\n <div class=\"p-field\">\n <ipt-select\n [control]=\"confirmForm.controls['reason']\"\n [data]=\"reasons\"\n optionLabel=\"name\"\n (eventSelect)=\"selectReason($event)\"\n [defaultText]=\"'Seleccione la raz\u00F3n'\"\n ></ipt-select>\n <small *ngIf=\"confirmForm.controls['reason'].invalid && confirmForm.controls['reason'].touched\" class=\"p-error\">\n La raz\u00F3n es requerida\n </small>\n </div>\n <div class=\"p-field\">\n <label class=\"container-observation\">Observaci\u00F3n</label>\n <textarea\n id=\"observation\"\n pInputTextarea\n formControlName=\"observation\"\n rows=\"3\"\n placeholder=\"Describe detalles adicionales del ajuste\"\n ></textarea>\n <small *ngIf=\"confirmForm.controls['observation'].invalid && confirmForm.controls['observation'].touched\" class=\"p-error\">\n La observaci\u00F3n es requerida\n </small>\n </div>\n </form>\n <p-footer>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Cancelar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeConfirmDialog()\"\n ></ipt-button>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Confirmar'\"\n [primary]=\"true\"\n [isEnabled]=\"confirmForm.valid\"\n (onClick)=\"acceptConfirmDialog()\"\n ></ipt-button>\n </p-footer>\n</p-dialog>\n\n</main>", styles: ["@media screen and (min-width: 320px){main{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s}main .modal_container{width:90%;height:-moz-fit-content;height:fit-content;max-height:90vh;overflow-y:auto;position:fixed;inset:0;margin:auto;background-color:#fff;border-radius:5px}.header_modal{display:flex;padding:15px 15px 0;gap:1rem;align-items:center}.header_modal h1{padding:.5rem;background-color:#1c77f7;color:#fff;width:100%;border-radius:10px;font-size:1.25rem;font-weight:700}.header_modal button{margin-left:auto;font-size:26px;padding:1.2rem;font-weight:200;color:#6c7f7d;display:flex;width:25px;height:25px;align-items:center;justify-content:center;transition:50ms;background-color:transparent;border:none}.header_modal button:hover{cursor:pointer;border-radius:50%;background-color:#d4d4d4}.grid_container{display:grid;grid-template-columns:1fr;padding:0 15px}form{display:grid;grid-template-columns:1fr;gap:.25rem;justify-content:center;padding:0 1rem}.section-header{margin:1.5rem 0 .5rem;border-bottom:2px solid #1c77f7}.section-header h2{font-size:1.2rem;color:#1c77f7;font-weight:600;margin-bottom:.5rem}.form-grid{display:grid;grid-template-columns:1fr;gap:0px .25rem}.buttons-container{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:flex-end;align-items:center;flex-direction:row}.buttons-container-inner{gap:1rem;width:auto;display:flex}.user-type-image{display:none}.no-parent-message{padding:1rem;text-align:center;color:#666;font-size:1rem;font-weight:500;background-color:#f8f9fa;border-radius:.5rem;margin-top:.5rem}}@media screen and (min-width: 768px){.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0px 1rem}}@media screen and (min-width: 1366px){form{padding:0}}.field{margin-top:15px;height:1px;max-width:70%;font-family:Poppins,sans-serif;color:#000;font-size:.875rem}.error-message{color:red;font-size:12px;margin-top:5px}:host ::ng-deep .p-selectbutton{display:flex;flex-wrap:wrap;justify-content:center;width:100%;min-width:10rem}:host ::ng-deep .p-selectbutton .p-button{padding:.5rem;font-size:.875rem;height:30px}:host ::ng-deep .p-buttonset .p-button:first-of-type{height:30px}.span-status{font-family:Poppins,sans-serif;color:#999;font-size:15px;font-weight:400;pointer-events:none;transition:.2s ease all;margin-left:9px}.card-status{margin-top:15px}:host ::ng-deep .p-field{margin-bottom:1rem}.p-error{color:red;font-size:.8rem}.confirm-form{display:flex;flex-direction:column;gap:1rem;font-family:Poppins,sans-serif}:host ::ng-deep .p-confirm-dialog .p-dialog-content{padding:1.5rem}:host ::ng-deep .p-confirm-dialog .p-dialog-footer{display:flex;justify-content:flex-end;gap:1rem}:host ::ng-deep .p-dialog{width:45%!important}.container-observation{width:100%;font-family:Poppins,sans-serif;color:#1c77f7;font-size:15px;font-weight:400;pointer-events:none}textarea{box-shadow:#64646f33 0 7px 29px;border-radius:3px;outline:none;display:block;transition:.2s;font-weight:300;font-family:Poppins,sans-serif;width:-webkit-fill-available;width:-moz-available;padding-left:10px;background-color:#fff;-webkit-appearance:none;max-height:80px;font-size:14px;max-width:100%}textarea::placeholder{color:#999;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none}textarea::focus textarea:focus-visible{color:#999;font-size:15px;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none;border:#1c77f7 1px solid;outline:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.Footer, selector: "p-footer" }, { kind: "component", type: i7.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "tabindex", "multiple", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey"], outputs: ["onOptionClick", "onChange"] }, { kind: "component", type: i8.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "component", type: i9.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "label", "control"], outputs: ["eventSelect"] }, { kind: "pipe", type: GenderDisplayPipe, name: "genderDisplay" }] });
2678
2672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: updateUserFormComponent, decorators: [{
2679
2673
  type: Component,
2680
- args: [{ selector: 'ipt-update-user-form', providers: [ConfirmationService], template: "<main *ngIf=\"visibleModal\">\n <div class=\"modal_container\">\n <div class=\"header_modal yellow-300\">\n <h1>Actualizar usuario</h1>\n <button (click)=\"closeTable()\">x</button>\n </div>\n <div class=\"grid_container\">\n <div>\n <form *ngIf=\"updateUserForm\" autocomplete=\"off\" [formGroup]=\"updateUserForm\">\n <!-- User Information Section -->\n <div class=\"section-header\">\n <h2>Informaci\u00F3n del usuario</h2>\n </div>\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['name']\"\n [validateText]=\"updateUserForm.controls['name'].hasError('required') ? 'Debe ingresar el nombre' :\n updateUserForm.controls['name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['last_name']\"\n [validateText]=\"updateUserForm.controls['last_name'].hasError('required') ? 'Debe ingresar los apellidos' :\n updateUserForm.controls['last_name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['last_name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['last_name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['last_name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['last_name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['email']\"\n [validateText]=\"updateUserForm.controls['email'].hasError('required') ? 'Debe ingresar un correo v\u00E1lido' :\n updateUserForm.controls['email'].hasError('maxlength') ? 'M\u00E1ximo 300 caracteres' :\n updateUserForm.controls['email'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email IPT'\"\n [control]=\"updateUserForm.controls['email_ipt']\"\n [validateText]=\"updateUserForm.controls['email_ipt'].hasError('required') ? 'Debe ingresar un correo IPT v\u00E1lido' :\n updateUserForm.controls['email_ipt'].hasError('maxlength') ? 'M\u00E1ximo 255 caracteres' :\n updateUserForm.controls['email_ipt'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email_ipt'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email_ipt'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo IPT v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'number'\"\n [placeHolder]=\"'Horas de servicio'\"\n [control]=\"updateUserForm.controls['service_hour']\"\n [validateText]=\"'Debe ingresar las horas de servicio'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['gender'].value\"\n [control]=\"updateUserForm.controls['gender']\"\n [selectCode]=\"updateUserForm.controls['gender'].value === null ? 'Seleccione g\u00E9nero' : (updateUserForm.controls['gender'].value | genderDisplay)\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'Seleccione g\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['phone_indicative'].value\"\n [control]=\"updateUserForm.controls['phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['id_card_type'].value\"\n [control]=\"updateUserForm.controls['id_card_type']\"\n [selectCode]=\"updateUserForm.controls['id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['id_card']\"\n [validateText]=\"updateUserForm.controls['id_card'].hasError('required') ? 'Debe ingresar el n\u00FAmero de documento' :\n updateUserForm.controls['id_card'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['id_card'].hasError('maxlength') ? 'M\u00E1ximo 20 caracteres' :\n updateUserForm.controls['id_card'].hasError('pattern') ? (updateUserForm.controls['id_card_type'].value === 7 || updateUserForm.controls['id_card_type'].value === 5 ? 'Solo letras y n\u00FAmeros permitidos' : 'Solo n\u00FAmeros permitidos') :\n 'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['country'].value\"\n [control]=\"updateUserForm.controls['country']\"\n [selectCode]=\"updateUserForm.controls['country'].value === null ? 'Pa\u00EDs de residencia' : updateUserForm.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['state'].value\"\n [control]=\"updateUserForm.controls['state']\"\n [selectCode]=\"updateUserForm.controls['state'].value === null ? 'Departamento o estado' : updateUserForm.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['city'].value\"\n [control]=\"updateUserForm.controls['city']\"\n [selectCode]=\"updateUserForm.controls['city'].value === null ? 'Ciudad de residencia' : updateUserForm.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div class=\"card-status\">\n <span class=\"span-status\">Estado</span>\n <p-selectButton \n [options]=\"justifyOptions\" \n formControlName=\"status\" \n optionLabel=\"name\" \n optionValue=\"code\">\n </p-selectButton>\n </div>\n <div class=\"field\">\n <p-checkbox\n formControlName=\"changePassword\"\n label=\"Cambio de contrase\u00F1a\"\n [binary]=\"true\"\n ></p-checkbox>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"updateUserForm.controls['changePassword'].value\">\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['password']\"\n [validateText]=\"updateUserForm.controls['password'].hasError('required') ? 'La contrase\u00F1a es requerida' :\n updateUserForm.controls['password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n 'Ingrese una contrase\u00F1a v\u00E1lida'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['re_password']\"\n [validateText]=\"updateUserForm.controls['re_password'].hasError('required') ? 'Debe repetir la contrase\u00F1a' :\n updateUserForm.controls['re_password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['re_password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.hasError('mismatch') ? 'Las contrase\u00F1as no coinciden' :\n 'Repita la contrase\u00F1a'\"\n ></ipt-input>\n </div>\n\n <!-- Mensaje adicional para el error de mismatch (opcional, si quieres mostrarlo por separado) -->\n\n <div *ngIf=\"updateUserForm.hasError('mismatch') && updateUserForm.controls['changePassword'].value\" class=\"error-message\">\n <small >Las contrase\u00F1as no coinciden</small>\n </div>\n <!-- Parent Information Section -->\n <div class=\"section-header\" *ngIf=\"DataStudent?.cods\">\n <h2>Informaci\u00F3n del acudiente</h2>\n </div>\n <div *ngIf=\"DataStudent?.cods\">\n <div *ngIf=\"showParentSection; else noParentMessage\">\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['parent_name']\"\n [validateText]=\"'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['parent_last_name']\"\n [validateText]=\"'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"updateUserForm.controls['parent_occupation']\"\n [validateText]=\"'Debe ingresar la ocupaci\u00F3n'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['parent_email']\"\n [validateText]=\"'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_id_card_type'].value\"\n [control]=\"updateUserForm.controls['parent_id_card_type']\"\n [selectCode]=\"updateUserForm.controls['parent_id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['parent_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('parent_id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['parent_id_card']\"\n [validateText]=\"'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_phone_indicative'].value\"\n [control]=\"updateUserForm.controls['parent_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('parent_phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['parent_phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n de oficina'\"\n [control]=\"updateUserForm.controls['parent_office_adrress']\"\n [validateText]=\"'Debe ingresar la direcci\u00F3n'\"\n ></ipt-input>\n </div>\n </div>\n <ng-template #noParentMessage>\n <div class=\"no-parent-message\">\n <p>Sin acudiente</p>\n </div>\n </ng-template>\n </div>\n <div class=\"buttons-container\">\n <div class=\"buttons-container-inner\">\n <ipt-button\n [buttonType]=\"'button'\"\n [label]=\"'Cerrar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeTable()\"\n ></ipt-button>\n\n <ipt-button\n [label]=\"'Actualizar'\"\n [isEnabled]=\"!loader && updateUserForm.valid && !updateUserForm.hasError('mismatch') && hasFormChanged()\"\n (onClick)=\"showConfirmDialogs()\"\n [primary]=\"true\"\n ></ipt-button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n\n <!-- Confirm Dialog para raz\u00F3n y observaci\u00F3n -->\n<p-dialog\n header=\"Confirmar Ajuste de Usuario\"\n [(visible)]=\"showConfirmDialog\"\n [modal]=\"true\"\n (onHide)=\"closeConfirmDialog()\"\n >\n <form [formGroup]=\"confirmForm\" class=\"confirm-form\">\n <div class=\"p-field\">\n <ipt-select\n [initialValue]=\"confirmForm.controls['reason'].value\"\n [control]=\"confirmForm.controls['reason']\"\n [data]=\"reasons\"\n optionLabel=\"name\"\n (eventSelect)=\"selectReason($event)\"\n [defaultText]=\"'Seleccione la raz\u00F3n'\"\n ></ipt-select>\n <small *ngIf=\"confirmForm.controls['reason'].invalid && confirmForm.controls['reason'].touched\" class=\"p-error\">\n La raz\u00F3n es requerida\n </small>\n </div>\n <div class=\"p-field\">\n <label class=\"container-observation\">Observaci\u00F3n</label>\n <textarea\n id=\"observation\"\n pInputTextarea\n formControlName=\"observation\"\n rows=\"3\"\n placeholder=\"Describe detalles adicionales del ajuste\"\n ></textarea>\n <small *ngIf=\"confirmForm.controls['observation'].invalid && confirmForm.controls['observation'].touched\" class=\"p-error\">\n La observaci\u00F3n es requerida\n </small>\n </div>\n </form>\n <p-footer>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Cancelar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeConfirmDialog()\"\n ></ipt-button>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Confirmar'\"\n [primary]=\"true\"\n [isEnabled]=\"confirmForm.valid\"\n (onClick)=\"acceptConfirmDialog()\"\n ></ipt-button>\n </p-footer>\n</p-dialog>\n\n</main>", styles: ["@media screen and (min-width: 320px){main{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s}main .modal_container{width:90%;height:-moz-fit-content;height:fit-content;max-height:90vh;overflow-y:auto;position:fixed;inset:0;margin:auto;background-color:#fff;border-radius:5px}.header_modal{display:flex;padding:15px 15px 0;gap:1rem;align-items:center}.header_modal h1{padding:.5rem;background-color:#1c77f7;color:#fff;width:100%;border-radius:10px;font-size:1.25rem;font-weight:700}.header_modal button{margin-left:auto;font-size:26px;padding:1.2rem;font-weight:200;color:#6c7f7d;display:flex;width:25px;height:25px;align-items:center;justify-content:center;transition:50ms;background-color:transparent;border:none}.header_modal button:hover{cursor:pointer;border-radius:50%;background-color:#d4d4d4}.grid_container{display:grid;grid-template-columns:1fr;padding:0 15px}form{display:grid;grid-template-columns:1fr;gap:.25rem;justify-content:center;padding:0 1rem}.section-header{margin:1.5rem 0 .5rem;border-bottom:2px solid #1c77f7}.section-header h2{font-size:1.2rem;color:#1c77f7;font-weight:600;margin-bottom:.5rem}.form-grid{display:grid;grid-template-columns:1fr;gap:0px .25rem}.buttons-container{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:flex-end;align-items:center;flex-direction:row}.buttons-container-inner{gap:1rem;width:auto;display:flex}.user-type-image{display:none}.no-parent-message{padding:1rem;text-align:center;color:#666;font-size:1rem;font-weight:500;background-color:#f8f9fa;border-radius:.5rem;margin-top:.5rem}}@media screen and (min-width: 768px){.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0px 1rem}}@media screen and (min-width: 1366px){form{padding:0}}.field{margin-top:15px;height:1px;max-width:70%;font-family:Poppins,sans-serif;color:#000;font-size:.875rem}.error-message{color:red;font-size:12px;margin-top:5px}:host ::ng-deep .p-selectbutton{display:flex;flex-wrap:wrap;justify-content:center;width:100%;min-width:10rem}:host ::ng-deep .p-selectbutton .p-button{padding:.5rem;font-size:.875rem;height:30px}:host ::ng-deep .p-buttonset .p-button:first-of-type{height:30px}.span-status{font-family:Poppins,sans-serif;color:#999;font-size:15px;font-weight:400;pointer-events:none;transition:.2s ease all;margin-left:9px}.card-status{margin-top:15px}:host ::ng-deep .p-field{margin-bottom:1.5rem}.p-error{color:red;font-size:.8rem}.confirm-form{display:flex;flex-direction:column;gap:1rem;font-family:Poppins,sans-serif}:host ::ng-deep .p-confirm-dialog .p-dialog-content{padding:1.5rem}:host ::ng-deep .p-confirm-dialog .p-dialog-footer{display:flex;justify-content:flex-end;gap:1rem}:host ::ng-deep .p-dialog{width:45%!important}.container-observation{width:100%;font-family:Poppins,sans-serif;color:#1c77f7;font-size:15px;font-weight:400;pointer-events:none}textarea{box-shadow:#64646f33 0 7px 29px;border-radius:3px;outline:none;display:block;transition:.2s;font-weight:300;font-family:Poppins,sans-serif;width:-webkit-fill-available;width:-moz-available;padding-left:10px;background-color:#fff;-webkit-appearance:none;max-height:80px;font-size:14px;max-width:100%}textarea::placeholder{color:#999;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none}textarea::focus textarea:focus-visible{color:#999;font-size:15px;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none;border:#1c77f7 1px solid;outline:none}\n"] }]
2681
- }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: ParameterService }, { type: BaseService }, { type: UserService }, { type: i2.ConfirmationService }]; }, propDecorators: { DataStudent: [{
2674
+ args: [{ selector: 'ipt-update-user-form', providers: [], template: "<main *ngIf=\"visibleModal\">\n <div class=\"modal_container\">\n <div class=\"header_modal yellow-300\">\n <h1>Actualizar usuario</h1>\n <button (click)=\"closeTable()\">x</button>\n </div>\n <div class=\"grid_container\">\n <div>\n <form *ngIf=\"updateUserForm\" autocomplete=\"off\" [formGroup]=\"updateUserForm\">\n <!-- User Information Section -->\n <div class=\"section-header\">\n <h2>Informaci\u00F3n del usuario</h2>\n </div>\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['name']\"\n [validateText]=\"updateUserForm.controls['name'].hasError('required') ? 'Debe ingresar el nombre' :\n updateUserForm.controls['name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['last_name']\"\n [validateText]=\"updateUserForm.controls['last_name'].hasError('required') ? 'Debe ingresar los apellidos' :\n updateUserForm.controls['last_name'].hasError('minlength') ? 'M\u00EDnimo 3 caracteres' :\n updateUserForm.controls['last_name'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.controls['last_name'].hasError('pattern') ? 'Solo letras, espacios y guiones' :\n updateUserForm.controls['last_name'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['last_name'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['email']\"\n [validateText]=\"updateUserForm.controls['email'].hasError('required') ? 'Debe ingresar un correo v\u00E1lido' :\n updateUserForm.controls['email'].hasError('maxlength') ? 'M\u00E1ximo 300 caracteres' :\n updateUserForm.controls['email'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'text'\"\n [placeHolder]=\"'Email IPT'\"\n [control]=\"updateUserForm.controls['email_ipt']\"\n [validateText]=\"updateUserForm.controls['email_ipt'].hasError('required') ? 'Debe ingresar un correo IPT v\u00E1lido' :\n updateUserForm.controls['email_ipt'].hasError('maxlength') ? 'M\u00E1ximo 255 caracteres' :\n updateUserForm.controls['email_ipt'].hasError('pattern') ? 'Tiene que ser un email correcto' :\n updateUserForm.controls['email_ipt'].hasError('hasWhitespace') ? 'No se permiten espacios al inicio o final' :\n updateUserForm.controls['email_ipt'].hasError('onlyWhitespace') ? 'No se permiten solo espacios' :\n 'Debe ingresar un correo IPT v\u00E1lido'\"\n ></ipt-input>\n <ipt-input\n *ngIf=\"showEmailIpt\"\n [inputType]=\"'number'\"\n [placeHolder]=\"'Horas de servicio'\"\n [control]=\"updateUserForm.controls['service_hour']\"\n [validateText]=\"'Debe ingresar las horas de servicio'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['gender'].value\"\n [control]=\"updateUserForm.controls['gender']\"\n [selectCode]=\"updateUserForm.controls['gender'].value === null ? 'Seleccione g\u00E9nero' : (updateUserForm.controls['gender'].value | genderDisplay)\"\n [data]=\"genders\"\n (eventSelect)=\"selectGender($event)\"\n [defaultText]=\"'Seleccione g\u00E9nero'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['phone_indicative'].value\"\n [control]=\"updateUserForm.controls['phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['id_card_type'].value\"\n [control]=\"updateUserForm.controls['id_card_type']\"\n [selectCode]=\"updateUserForm.controls['id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['id_card']\"\n [validateText]=\"updateUserForm.controls['id_card'].hasError('required') ? 'Debe ingresar el n\u00FAmero de documento' :\n updateUserForm.controls['id_card'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['id_card'].hasError('maxlength') ? 'M\u00E1ximo 20 caracteres' :\n updateUserForm.controls['id_card'].hasError('pattern') ? (updateUserForm.controls['id_card_type'].value === 7 || updateUserForm.controls['id_card_type'].value === 5 ? 'Solo letras y n\u00FAmeros permitidos' : 'Solo n\u00FAmeros permitidos') :\n 'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['country'].value\"\n [control]=\"updateUserForm.controls['country']\"\n [selectCode]=\"updateUserForm.controls['country'].value === null ? 'Pa\u00EDs de residencia' : updateUserForm.controls['country'].value\"\n (eventSelect)=\"selectCountry($event)\"\n [data]=\"countries\"\n [defaultText]=\"'Pa\u00EDs de residencia'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['state'].value\"\n [control]=\"updateUserForm.controls['state']\"\n [selectCode]=\"updateUserForm.controls['state'].value === null ? 'Departamento o estado' : updateUserForm.controls['state'].value\"\n [isRequired]=\"true\"\n (eventSelect)=\"selectState($event)\"\n [data]=\"states\"\n [defaultText]=\"'Departamento o estado'\"\n ></ipt-select>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['city'].value\"\n [control]=\"updateUserForm.controls['city']\"\n [selectCode]=\"updateUserForm.controls['city'].value === null ? 'Ciudad de residencia' : updateUserForm.controls['city'].value\"\n (eventSelect)=\"selectCity($event)\"\n [data]=\"cities\"\n [defaultText]=\"'Ciudad de residencia'\"\n ></ipt-select>\n <div class=\"card-status\">\n <span class=\"span-status\">Estado</span>\n <p-selectButton \n [options]=\"justifyOptions\" \n formControlName=\"status\" \n optionLabel=\"name\" \n optionValue=\"code\">\n </p-selectButton>\n </div>\n <div *ngIf=\"!userRoleCommercial\" class=\"field\">\n <p-checkbox\n formControlName=\"changePassword\"\n label=\"Cambio de contrase\u00F1a\"\n [binary]=\"true\"\n ></p-checkbox>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"updateUserForm.controls['changePassword'].value\">\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['password']\"\n [validateText]=\"updateUserForm.controls['password'].hasError('required') ? 'La contrase\u00F1a es requerida' :\n updateUserForm.controls['password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n 'Ingrese una contrase\u00F1a v\u00E1lida'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'password'\"\n [placeHolder]=\"'Repetir contrase\u00F1a'\"\n [control]=\"updateUserForm.controls['re_password']\"\n [validateText]=\"updateUserForm.controls['re_password'].hasError('required') ? 'Debe repetir la contrase\u00F1a' :\n updateUserForm.controls['re_password'].hasError('minlength') ? 'M\u00EDnimo 5 caracteres' :\n updateUserForm.controls['re_password'].hasError('maxlength') ? 'M\u00E1ximo 32 caracteres' :\n updateUserForm.hasError('mismatch') ? 'Las contrase\u00F1as no coinciden' :\n 'Repita la contrase\u00F1a'\"\n ></ipt-input>\n </div>\n\n <!-- Mensaje adicional para el error de mismatch (opcional, si quieres mostrarlo por separado) -->\n\n <div *ngIf=\"updateUserForm.hasError('mismatch') && updateUserForm.controls['changePassword'].value\" class=\"error-message\">\n <small >Las contrase\u00F1as no coinciden</small>\n </div>\n <!-- Parent Information Section -->\n <div class=\"section-header\" *ngIf=\"DataStudent?.cods\">\n <h2>Informaci\u00F3n del acudiente</h2>\n </div>\n <div *ngIf=\"DataStudent?.cods\">\n <div *ngIf=\"showParentSection; else noParentMessage\">\n <div class=\"form-grid\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"updateUserForm.controls['parent_name']\"\n [validateText]=\"'Debe ingresar el nombre'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"updateUserForm.controls['parent_last_name']\"\n [validateText]=\"'Debe ingresar los apellidos'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Ocupaci\u00F3n'\"\n [control]=\"updateUserForm.controls['parent_occupation']\"\n [validateText]=\"'Debe ingresar la ocupaci\u00F3n'\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'email'\"\n [placeHolder]=\"'Email'\"\n [control]=\"updateUserForm.controls['parent_email']\"\n [validateText]=\"'Debe ingresar un correo v\u00E1lido'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_id_card_type'].value\"\n [control]=\"updateUserForm.controls['parent_id_card_type']\"\n [selectCode]=\"updateUserForm.controls['parent_id_card_type'].value === null ? 'Tipo de documento' : updateUserForm.controls['parent_id_card_type'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType('parent_id_card_type', $event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"updateUserForm.controls['parent_id_card']\"\n [validateText]=\"'Debe ingresar el n\u00FAmero de documento'\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"updateUserForm.controls['parent_phone_indicative'].value\"\n [control]=\"updateUserForm.controls['parent_phone_indicative']\"\n [data]=\"indicatives\"\n (eventSelect)=\"selectIndicative('parent_phone_indicative', $event)\"\n [defaultText]=\"'Indicativo'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Tel\u00E9fono'\"\n [control]=\"updateUserForm.controls['parent_phone_number']\"\n [validateText]=\"'Debe ingresar un n\u00FAmero de tel\u00E9fono v\u00E1lido'\"\n ></ipt-input>\n\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Direcci\u00F3n de oficina'\"\n [control]=\"updateUserForm.controls['parent_office_adrress']\"\n [validateText]=\"'Debe ingresar la direcci\u00F3n'\"\n ></ipt-input>\n </div>\n </div>\n <ng-template #noParentMessage>\n <div class=\"no-parent-message\">\n <p>Sin acudiente</p>\n </div>\n </ng-template>\n </div>\n <div class=\"buttons-container\">\n <div class=\"buttons-container-inner\">\n <ipt-button\n [buttonType]=\"'button'\"\n [label]=\"'Cerrar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeTable()\"\n ></ipt-button>\n\n <ipt-button\n [label]=\"'Actualizar'\"\n [isEnabled]=\"!loader && updateUserForm.valid && !updateUserForm.hasError('mismatch') && hasFormChanged()\"\n (onClick)=\"showConfirmDialogs()\"\n [primary]=\"true\"\n ></ipt-button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n\n <!-- Confirm Dialog para raz\u00F3n y observaci\u00F3n -->\n<p-dialog\n header=\"Confirmar Ajuste de Usuario\"\n [(visible)]=\"showConfirmDialog\"\n [modal]=\"true\"\n (onHide)=\"closeConfirmDialog()\"\n >\n <form [formGroup]=\"confirmForm\" class=\"confirm-form\">\n <div class=\"p-field\">\n <ipt-select\n [control]=\"confirmForm.controls['reason']\"\n [data]=\"reasons\"\n optionLabel=\"name\"\n (eventSelect)=\"selectReason($event)\"\n [defaultText]=\"'Seleccione la raz\u00F3n'\"\n ></ipt-select>\n <small *ngIf=\"confirmForm.controls['reason'].invalid && confirmForm.controls['reason'].touched\" class=\"p-error\">\n La raz\u00F3n es requerida\n </small>\n </div>\n <div class=\"p-field\">\n <label class=\"container-observation\">Observaci\u00F3n</label>\n <textarea\n id=\"observation\"\n pInputTextarea\n formControlName=\"observation\"\n rows=\"3\"\n placeholder=\"Describe detalles adicionales del ajuste\"\n ></textarea>\n <small *ngIf=\"confirmForm.controls['observation'].invalid && confirmForm.controls['observation'].touched\" class=\"p-error\">\n La observaci\u00F3n es requerida\n </small>\n </div>\n </form>\n <p-footer>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Cancelar'\"\n [primary]=\"false\"\n [isEnabled]=\"true\"\n (onClick)=\"closeConfirmDialog()\"\n ></ipt-button>\n <ipt-button\n class=\"p-button-secondary\"\n [buttonType]=\"'button'\"\n [label]=\"'Confirmar'\"\n [primary]=\"true\"\n [isEnabled]=\"confirmForm.valid\"\n (onClick)=\"acceptConfirmDialog()\"\n ></ipt-button>\n </p-footer>\n</p-dialog>\n\n</main>", styles: ["@media screen and (min-width: 320px){main{background:rgba(0,0,0,.472);color:#fff;position:fixed;top:0;left:0;height:100vh;width:100vw;transition:all .5s}main .modal_container{width:90%;height:-moz-fit-content;height:fit-content;max-height:90vh;overflow-y:auto;position:fixed;inset:0;margin:auto;background-color:#fff;border-radius:5px}.header_modal{display:flex;padding:15px 15px 0;gap:1rem;align-items:center}.header_modal h1{padding:.5rem;background-color:#1c77f7;color:#fff;width:100%;border-radius:10px;font-size:1.25rem;font-weight:700}.header_modal button{margin-left:auto;font-size:26px;padding:1.2rem;font-weight:200;color:#6c7f7d;display:flex;width:25px;height:25px;align-items:center;justify-content:center;transition:50ms;background-color:transparent;border:none}.header_modal button:hover{cursor:pointer;border-radius:50%;background-color:#d4d4d4}.grid_container{display:grid;grid-template-columns:1fr;padding:0 15px}form{display:grid;grid-template-columns:1fr;gap:.25rem;justify-content:center;padding:0 1rem}.section-header{margin:1.5rem 0 .5rem;border-bottom:2px solid #1c77f7}.section-header h2{font-size:1.2rem;color:#1c77f7;font-weight:600;margin-bottom:.5rem}.form-grid{display:grid;grid-template-columns:1fr;gap:0px .25rem}.buttons-container{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:flex-end;align-items:center;flex-direction:row}.buttons-container-inner{gap:1rem;width:auto;display:flex}.user-type-image{display:none}.no-parent-message{padding:1rem;text-align:center;color:#666;font-size:1rem;font-weight:500;background-color:#f8f9fa;border-radius:.5rem;margin-top:.5rem}}@media screen and (min-width: 768px){.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0px 1rem}}@media screen and (min-width: 1366px){form{padding:0}}.field{margin-top:15px;height:1px;max-width:70%;font-family:Poppins,sans-serif;color:#000;font-size:.875rem}.error-message{color:red;font-size:12px;margin-top:5px}:host ::ng-deep .p-selectbutton{display:flex;flex-wrap:wrap;justify-content:center;width:100%;min-width:10rem}:host ::ng-deep .p-selectbutton .p-button{padding:.5rem;font-size:.875rem;height:30px}:host ::ng-deep .p-buttonset .p-button:first-of-type{height:30px}.span-status{font-family:Poppins,sans-serif;color:#999;font-size:15px;font-weight:400;pointer-events:none;transition:.2s ease all;margin-left:9px}.card-status{margin-top:15px}:host ::ng-deep .p-field{margin-bottom:1rem}.p-error{color:red;font-size:.8rem}.confirm-form{display:flex;flex-direction:column;gap:1rem;font-family:Poppins,sans-serif}:host ::ng-deep .p-confirm-dialog .p-dialog-content{padding:1.5rem}:host ::ng-deep .p-confirm-dialog .p-dialog-footer{display:flex;justify-content:flex-end;gap:1rem}:host ::ng-deep .p-dialog{width:45%!important}.container-observation{width:100%;font-family:Poppins,sans-serif;color:#1c77f7;font-size:15px;font-weight:400;pointer-events:none}textarea{box-shadow:#64646f33 0 7px 29px;border-radius:3px;outline:none;display:block;transition:.2s;font-weight:300;font-family:Poppins,sans-serif;width:-webkit-fill-available;width:-moz-available;padding-left:10px;background-color:#fff;-webkit-appearance:none;max-height:80px;font-size:14px;max-width:100%}textarea::placeholder{color:#999;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none}textarea::focus textarea:focus-visible{color:#999;font-size:15px;font-weight:400;font-family:Poppins,sans-serif;pointer-events:none;border:#1c77f7 1px solid;outline:none}\n"] }]
2675
+ }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: ParameterService }, { type: BaseService }, { type: UserService }]; }, propDecorators: { DataStudent: [{
2682
2676
  type: Input
2683
2677
  }], visibleModal: [{
2684
2678
  type: Input