iptdevs-design-system 3.2.2 → 3.2.3
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.
- package/esm2020/lib/components/forms/update-user-form/update-user-form.component.mjs +77 -9
- package/fesm2015/iptdevs-design-system.mjs +77 -8
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +76 -8
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/components/forms/update-user-form/update-user-form.component.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1888,6 +1888,8 @@ class updateUserFormComponent {
|
|
|
1888
1888
|
this.stratums = [];
|
|
1889
1889
|
this.showConfirmDialog = false;
|
|
1890
1890
|
this.userRoleCommercial = false;
|
|
1891
|
+
this.canEditRole = false;
|
|
1892
|
+
this.roles = [];
|
|
1891
1893
|
this.initialFormValue = [];
|
|
1892
1894
|
this.pendingInit = false;
|
|
1893
1895
|
this.isStudent = false;
|
|
@@ -1910,6 +1912,7 @@ class updateUserFormComponent {
|
|
|
1910
1912
|
this.getParameters();
|
|
1911
1913
|
this.trackIdTypeChanges();
|
|
1912
1914
|
this.setJustifyOptions();
|
|
1915
|
+
this.setRoles();
|
|
1913
1916
|
}
|
|
1914
1917
|
ngOnChanges(changes) {
|
|
1915
1918
|
if (changes['visibleModal'] && changes['visibleModal'].currentValue) {
|
|
@@ -1918,6 +1921,7 @@ class updateUserFormComponent {
|
|
|
1918
1921
|
this.setJustifyOptions();
|
|
1919
1922
|
this.trackIdTypeChanges();
|
|
1920
1923
|
this.validationUserRole();
|
|
1924
|
+
this.setRoles();
|
|
1921
1925
|
this.cdr.detectChanges();
|
|
1922
1926
|
}
|
|
1923
1927
|
else {
|
|
@@ -1958,6 +1962,58 @@ class updateUserFormComponent {
|
|
|
1958
1962
|
(_c = this.updateUserForm.get('status')) === null || _c === void 0 ? void 0 : _c.enable({ emitEvent: false });
|
|
1959
1963
|
}
|
|
1960
1964
|
}
|
|
1965
|
+
setRoles() {
|
|
1966
|
+
const userRole = this.baseService.getUserRole();
|
|
1967
|
+
if (userRole === 1) {
|
|
1968
|
+
this.roles = [
|
|
1969
|
+
{ name: 'Super Admin', code: 1 },
|
|
1970
|
+
{ name: 'Lider Academico', code: 10 },
|
|
1971
|
+
{ name: 'Coordinador Academico', code: 11 },
|
|
1972
|
+
{ name: 'Teacher Academico', code: 12 },
|
|
1973
|
+
{ name: 'Estudiante', code: 13 },
|
|
1974
|
+
{ name: 'Posible Estudiante', code: 15 },
|
|
1975
|
+
{ name: 'Lider Marketing', code: 20 },
|
|
1976
|
+
{ name: 'Coordinador Marketing', code: 21 },
|
|
1977
|
+
{ name: 'Auxiliar Marketing', code: 22 },
|
|
1978
|
+
{ name: 'Lider Administrativo', code: 30 },
|
|
1979
|
+
{ name: 'Coordinador Administrativo', code: 31 },
|
|
1980
|
+
{ name: 'Auxiliar Administrativo', code: 32 },
|
|
1981
|
+
{ name: 'Lider Comercial', code: 40 },
|
|
1982
|
+
{ name: 'Coordinador Comercial', code: 41 },
|
|
1983
|
+
{ name: 'Asesor Comercial', code: 42 },
|
|
1984
|
+
{ name: 'Lider Cartera', code: 50 },
|
|
1985
|
+
{ name: 'Coordinador Cartera', code: 51 },
|
|
1986
|
+
{ name: 'Asesor Cartera', code: 52 },
|
|
1987
|
+
{ name: 'Proveedor', code: 60 }
|
|
1988
|
+
];
|
|
1989
|
+
}
|
|
1990
|
+
else if (userRole === 30) {
|
|
1991
|
+
this.roles = [
|
|
1992
|
+
// { name: 'Super Admin', code: 1 },
|
|
1993
|
+
{ name: 'Lider Academico', code: 10 },
|
|
1994
|
+
{ name: 'Coordinador Academico', code: 11 },
|
|
1995
|
+
{ name: 'Teacher Academico', code: 12 },
|
|
1996
|
+
{ name: 'Estudiante', code: 13 },
|
|
1997
|
+
{ name: 'Posible Estudiante', code: 15 },
|
|
1998
|
+
{ name: 'Lider Marketing', code: 20 },
|
|
1999
|
+
{ name: 'Coordinador Marketing', code: 21 },
|
|
2000
|
+
{ name: 'Auxiliar Marketing', code: 22 },
|
|
2001
|
+
{ name: 'Lider Administrativo', code: 30 },
|
|
2002
|
+
{ name: 'Coordinador Administrativo', code: 31 },
|
|
2003
|
+
{ name: 'Auxiliar Administrativo', code: 32 },
|
|
2004
|
+
{ name: 'Lider Comercial', code: 40 },
|
|
2005
|
+
{ name: 'Coordinador Comercial', code: 41 },
|
|
2006
|
+
{ name: 'Asesor Comercial', code: 42 },
|
|
2007
|
+
{ name: 'Lider Cartera', code: 50 },
|
|
2008
|
+
{ name: 'Coordinador Cartera', code: 51 },
|
|
2009
|
+
{ name: 'Asesor Cartera', code: 52 },
|
|
2010
|
+
{ name: 'Proveedor', code: 60 }
|
|
2011
|
+
];
|
|
2012
|
+
}
|
|
2013
|
+
else {
|
|
2014
|
+
this.roles = [];
|
|
2015
|
+
}
|
|
2016
|
+
}
|
|
1961
2017
|
getParameters() {
|
|
1962
2018
|
if (this.parametersLoaded) {
|
|
1963
2019
|
this.setParameters();
|
|
@@ -2008,10 +2064,12 @@ class updateUserFormComponent {
|
|
|
2008
2064
|
}
|
|
2009
2065
|
initForm() {
|
|
2010
2066
|
var _a, _b, _c;
|
|
2067
|
+
const userRole = this.baseService.getUserRole();
|
|
2068
|
+
this.canEditRole = userRole === 1 || userRole === 30;
|
|
2011
2069
|
const baseForm = {
|
|
2012
2070
|
name: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(32)]],
|
|
2013
2071
|
last_name: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(32)]],
|
|
2014
|
-
email: ['', [Validators.required, Validators.email, Validators.maxLength(
|
|
2072
|
+
email: ['', [Validators.required, Validators.email, Validators.maxLength(250)]],
|
|
2015
2073
|
gender: ['', [Validators.required]],
|
|
2016
2074
|
id_card_type: ['', [Validators.required]],
|
|
2017
2075
|
id_card: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(20)]],
|
|
@@ -2020,8 +2078,8 @@ class updateUserFormComponent {
|
|
|
2020
2078
|
country: ['', [Validators.required]],
|
|
2021
2079
|
state: ['', [Validators.required]],
|
|
2022
2080
|
city: ['', [Validators.required]],
|
|
2023
|
-
role: [{ value: '', disabled:
|
|
2024
|
-
service_hour: ['', Validators.required],
|
|
2081
|
+
role: [{ value: '', disabled: !this.canEditRole }],
|
|
2082
|
+
service_hour: ['', [Validators.required, Validators.pattern(/^[0-9]+$/), Validators.min(0), Validators.max(44)]],
|
|
2025
2083
|
password: ['', []],
|
|
2026
2084
|
re_password: ['', []],
|
|
2027
2085
|
changePassword: [false],
|
|
@@ -2029,7 +2087,7 @@ class updateUserFormComponent {
|
|
|
2029
2087
|
};
|
|
2030
2088
|
if (this.showEmailIpt) {
|
|
2031
2089
|
Object.assign(baseForm, {
|
|
2032
|
-
email_ipt: ['', [Validators.required, Validators.email, Validators.maxLength(
|
|
2090
|
+
email_ipt: ['', [Validators.required, Validators.email, Validators.maxLength(250)]]
|
|
2033
2091
|
});
|
|
2034
2092
|
}
|
|
2035
2093
|
if (this.showParentSection) {
|
|
@@ -2131,7 +2189,8 @@ class updateUserFormComponent {
|
|
|
2131
2189
|
country: (_a = this.DataStudent.city) === null || _a === void 0 ? void 0 : _a.country,
|
|
2132
2190
|
state: (_b = this.DataStudent.city) === null || _b === void 0 ? void 0 : _b.state,
|
|
2133
2191
|
city: (_c = this.DataStudent.city) === null || _c === void 0 ? void 0 : _c.code,
|
|
2134
|
-
role: this.transformRole(this.DataStudent.role) || '',
|
|
2192
|
+
// role: this.transformRole(this.DataStudent.role) || '',
|
|
2193
|
+
role: this.canEditRole ? this.DataStudent.role : this.transformRole(this.DataStudent.role) || '',
|
|
2135
2194
|
service_hour: this.DataStudent.service_hour || 0,
|
|
2136
2195
|
changePassword: false,
|
|
2137
2196
|
password: '',
|
|
@@ -2203,6 +2262,7 @@ class updateUserFormComponent {
|
|
|
2203
2262
|
else {
|
|
2204
2263
|
this.userRoleCommercial = false;
|
|
2205
2264
|
}
|
|
2265
|
+
this.canEditRole = userRole === 1 || userRole === 30;
|
|
2206
2266
|
}
|
|
2207
2267
|
closeTable() {
|
|
2208
2268
|
this.visibleModal = false;
|
|
@@ -2351,6 +2411,15 @@ class updateUserFormComponent {
|
|
|
2351
2411
|
selectReason(reason) {
|
|
2352
2412
|
this.confirmForm.controls['reason'].setValue(reason ? reason : null);
|
|
2353
2413
|
}
|
|
2414
|
+
selectRole(role) {
|
|
2415
|
+
var _a, _b;
|
|
2416
|
+
if (role !== null) {
|
|
2417
|
+
(_a = this.updateUserForm.get('role')) === null || _a === void 0 ? void 0 : _a.setValue(role);
|
|
2418
|
+
}
|
|
2419
|
+
else {
|
|
2420
|
+
(_b = this.updateUserForm.get('role')) === null || _b === void 0 ? void 0 : _b.setValue(null);
|
|
2421
|
+
}
|
|
2422
|
+
}
|
|
2354
2423
|
hasFormChanged() {
|
|
2355
2424
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
2356
2425
|
if (!this.initialFormValue || !this.DataStudent) {
|
|
@@ -2503,7 +2572,7 @@ class updateUserFormComponent {
|
|
|
2503
2572
|
const confirmValue = this.confirmForm.value;
|
|
2504
2573
|
const request = {
|
|
2505
2574
|
token: this.baseService.getUserToken(),
|
|
2506
|
-
user: Object.assign(Object.assign({ code: this.DataStudent.code, name: formValue.name, last_name: formValue.last_name, id_card_type: formValue.id_card_type, id_card: formValue.id_card, phone_indicative: formValue.phone_indicative, phone_number: formValue.phone_number, email: formValue.email, gender: formValue.gender, city: formValue.city, service_hour: formValue.service_hour, role: this.DataStudent.role, status: formValue.status }, (this.showEmailIpt ? { email_ipt: formValue.email_ipt } : {})), (formValue.changePassword && formValue.password ? { password: formValue.password } : {})),
|
|
2575
|
+
user: Object.assign(Object.assign({ code: this.DataStudent.code, name: formValue.name, last_name: formValue.last_name, id_card_type: formValue.id_card_type, id_card: formValue.id_card, phone_indicative: formValue.phone_indicative, phone_number: formValue.phone_number, email: formValue.email, gender: formValue.gender, city: formValue.city, service_hour: formValue.service_hour, role: this.canEditRole ? formValue.role : this.DataStudent.role, status: formValue.status }, (this.showEmailIpt ? { email_ipt: formValue.email_ipt } : {})), (formValue.changePassword && formValue.password ? { password: formValue.password } : {})),
|
|
2507
2576
|
parent: this.showParentSection
|
|
2508
2577
|
? {
|
|
2509
2578
|
code: ((_b = (_a = this.DataStudent.cods) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.code) || null,
|
|
@@ -2593,10 +2662,10 @@ class updateUserFormComponent {
|
|
|
2593
2662
|
}
|
|
2594
2663
|
}
|
|
2595
2664
|
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 });
|
|
2596
|
-
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]=\"!loader && 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" }] });
|
|
2665
|
+
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\n <div *ngIf=\"canEditRole; else readOnlyRole\">\n <ipt-select\n [initialValue]=\"updateUserForm.controls['role'].value\"\n [control]=\"updateUserForm.controls['role']\"\n [selectCode]=\"updateUserForm.controls['role'].value === null ? 'Seleccione rol' : updateUserForm.controls['role'].value\"\n [isRequired]=\"true\"\n [data]=\"roles\"\n optionLabel=\"name\"\n optionValue=\"code\"\n (eventSelect)=\"selectRole($event)\"\n [defaultText]=\"'Seleccione rol'\"\n ></ipt-select>\n </div>\n <ng-template #readOnlyRole>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n </ng-template>\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]=\"!loader && 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" }] });
|
|
2597
2666
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: updateUserFormComponent, decorators: [{
|
|
2598
2667
|
type: Component,
|
|
2599
|
-
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]=\"!loader && 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"] }]
|
|
2668
|
+
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\n <div *ngIf=\"canEditRole; else readOnlyRole\">\n <ipt-select\n [initialValue]=\"updateUserForm.controls['role'].value\"\n [control]=\"updateUserForm.controls['role']\"\n [selectCode]=\"updateUserForm.controls['role'].value === null ? 'Seleccione rol' : updateUserForm.controls['role'].value\"\n [isRequired]=\"true\"\n [data]=\"roles\"\n optionLabel=\"name\"\n optionValue=\"code\"\n (eventSelect)=\"selectRole($event)\"\n [defaultText]=\"'Seleccione rol'\"\n ></ipt-select>\n </div>\n <ng-template #readOnlyRole>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Rol'\"\n [control]=\"updateUserForm.controls['role']\"\n [validateText]=\"'Rol requerido'\"\n ></ipt-input>\n </ng-template>\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]=\"!loader && 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"] }]
|
|
2600
2669
|
}], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: ParameterService }, { type: BaseService }, { type: UserService }]; }, propDecorators: { DataStudent: [{
|
|
2601
2670
|
type: Input
|
|
2602
2671
|
}], visibleModal: [{
|