@solcre-org/core-ui 2.15.31 → 2.15.33
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/assets/i18n/en/common.json +10 -10
- package/assets/i18n/es/common.json +12 -11
- package/fesm2022/solcre-org-core-ui.mjs +96 -21
- package/fesm2022/solcre-org-core-ui.mjs.map +1 -1
- package/index.d.ts +8 -2
- package/package.json +1 -1
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
},
|
|
143
143
|
"scheduler": {
|
|
144
144
|
"rooms": "Meeting room booking",
|
|
145
|
-
"people": "
|
|
145
|
+
"people": "empleados",
|
|
146
146
|
"january": "Enero",
|
|
147
147
|
"february": "Febrero",
|
|
148
148
|
"march": "Marzo",
|
|
@@ -798,8 +798,8 @@
|
|
|
798
798
|
}
|
|
799
799
|
},
|
|
800
800
|
"peoples": {
|
|
801
|
-
"title": "
|
|
802
|
-
"list": "Lista de
|
|
801
|
+
"title": "Empleados",
|
|
802
|
+
"list": "Lista de empleados",
|
|
803
803
|
"name": "Name",
|
|
804
804
|
"id": "ID",
|
|
805
805
|
"full_name": "Name completo",
|
|
@@ -879,7 +879,7 @@
|
|
|
879
879
|
"company_azf_procedure": "Planilla de procedimiento AZF",
|
|
880
880
|
"company_legals": "Planilla de legales",
|
|
881
881
|
"file_template": "Plantilla",
|
|
882
|
-
"company_employees_bulk": "Planilla de carga masiva de
|
|
882
|
+
"company_employees_bulk": "Planilla de carga masiva de empleados"
|
|
883
883
|
},
|
|
884
884
|
"name_placeholder": "Ingrese el nombre de la plantilla",
|
|
885
885
|
"details_placeholder": "Ingrese los detalles de la plantilla",
|
|
@@ -906,13 +906,13 @@
|
|
|
906
906
|
"title": "Onboarding",
|
|
907
907
|
"subnav": {
|
|
908
908
|
"company_data": "Datos de la empresa",
|
|
909
|
-
"people": "
|
|
909
|
+
"people": "Empleados",
|
|
910
910
|
"status_process": "Status proceso ingreso",
|
|
911
911
|
"documentation": "Documentación",
|
|
912
912
|
"templates": "Plantillas"
|
|
913
913
|
},
|
|
914
914
|
"company_data_hint": "Por favor complete los datos de la empresa para poder iniciar el proceso de Onboarding.",
|
|
915
|
-
"people_hint": "Puede empezar a cargar individualmente
|
|
915
|
+
"people_hint": "Puede empezar a cargar individualmente empleados a su empresa a través del formulario, o masivamente usando la planilla"
|
|
916
916
|
},
|
|
917
917
|
"company-data": {
|
|
918
918
|
"general": {
|
|
@@ -960,9 +960,9 @@
|
|
|
960
960
|
}
|
|
961
961
|
},
|
|
962
962
|
"peoples": {
|
|
963
|
-
"charge_people": "Carga de
|
|
964
|
-
"masive_charge": "Carga masiva de
|
|
965
|
-
"charged_peoples": "
|
|
963
|
+
"charge_people": "Carga de empleados",
|
|
964
|
+
"masive_charge": "Carga masiva de empleados",
|
|
965
|
+
"charged_peoples": "Empleados cargadas",
|
|
966
966
|
"first_name": "Name",
|
|
967
967
|
"last_name": "Apellido",
|
|
968
968
|
"document": "Documento",
|
|
@@ -993,7 +993,7 @@
|
|
|
993
993
|
"is_emergency_contact": "Es contacto de emergencia",
|
|
994
994
|
"mailbox_access": "Acceso a buzonera",
|
|
995
995
|
"uses_garage": "Utiliza cochera",
|
|
996
|
-
"file": "
|
|
996
|
+
"file": "Empleados a subir",
|
|
997
997
|
"file_placeholder": "Seleccione el archivo",
|
|
998
998
|
"file_required": "El archivo es requerido",
|
|
999
999
|
"massive_charge_description": "Utilice el siguiente documento como base para cargar masivamente:",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
},
|
|
145
145
|
"scheduler": {
|
|
146
146
|
"rooms": "Reserva de salas",
|
|
147
|
-
"people": "
|
|
147
|
+
"people": "empleados",
|
|
148
148
|
"january": "Enero",
|
|
149
149
|
"february": "Febrero",
|
|
150
150
|
"march": "Marzo",
|
|
@@ -410,7 +410,8 @@
|
|
|
410
410
|
"waste_collection_type_options": {
|
|
411
411
|
"none": "Ninguno",
|
|
412
412
|
"morning": "Matutino",
|
|
413
|
-
"evening": "Vespertino"
|
|
413
|
+
"evening": "Vespertino",
|
|
414
|
+
"both": "Ambos"
|
|
414
415
|
},
|
|
415
416
|
"waste_collection_days": {
|
|
416
417
|
"monday": "Lunes",
|
|
@@ -801,8 +802,8 @@
|
|
|
801
802
|
}
|
|
802
803
|
},
|
|
803
804
|
"peoples": {
|
|
804
|
-
"title": "
|
|
805
|
-
"list": "Lista de
|
|
805
|
+
"title": "Empleados",
|
|
806
|
+
"list": "Lista de empleados",
|
|
806
807
|
"name": "Nombre",
|
|
807
808
|
"id": "ID",
|
|
808
809
|
"full_name": "Nombre completo",
|
|
@@ -883,7 +884,7 @@
|
|
|
883
884
|
"company_azf_procedure": "Planilla de procedimiento AZF",
|
|
884
885
|
"company_legals": "Planilla de legales",
|
|
885
886
|
"file_template": "Plantilla",
|
|
886
|
-
"company_employees_bulk": "Planilla de carga masiva de
|
|
887
|
+
"company_employees_bulk": "Planilla de carga masiva de empleados"
|
|
887
888
|
},
|
|
888
889
|
"name_placeholder": "Ingrese el nombre de la plantilla",
|
|
889
890
|
"details_placeholder": "Ingrese los detalles de la plantilla",
|
|
@@ -910,13 +911,13 @@
|
|
|
910
911
|
"title": "Onboarding",
|
|
911
912
|
"subnav": {
|
|
912
913
|
"company_data": "Datos de la empresa",
|
|
913
|
-
"people": "
|
|
914
|
+
"people": "Empleados",
|
|
914
915
|
"status_process": "Status proceso ingreso",
|
|
915
916
|
"documentation": "Documentación",
|
|
916
917
|
"templates": "Plantillas"
|
|
917
918
|
},
|
|
918
919
|
"company_data_hint": "Por favor complete los datos de la empresa para poder iniciar el proceso de Onboarding.",
|
|
919
|
-
"people_hint": "Puede empezar a cargar individualmente
|
|
920
|
+
"people_hint": "Puede empezar a cargar individualmente empleados a su empresa a través del formulario, o masivamente usando la planilla"
|
|
920
921
|
},
|
|
921
922
|
"company-data": {
|
|
922
923
|
"general": {
|
|
@@ -964,9 +965,9 @@
|
|
|
964
965
|
}
|
|
965
966
|
},
|
|
966
967
|
"peoples": {
|
|
967
|
-
"charge_people": "Carga de
|
|
968
|
-
"masive_charge": "Carga masiva de
|
|
969
|
-
"charged_peoples": "
|
|
968
|
+
"charge_people": "Carga de empleados",
|
|
969
|
+
"masive_charge": "Carga masiva de empleados",
|
|
970
|
+
"charged_peoples": "Empleados cargadas",
|
|
970
971
|
"first_name": "Nombre",
|
|
971
972
|
"last_name": "Apellido",
|
|
972
973
|
"document": "Documento",
|
|
@@ -997,7 +998,7 @@
|
|
|
997
998
|
"is_emergency_contact": "Es contacto de emergencia",
|
|
998
999
|
"mailbox_access": "Acceso a buzonera",
|
|
999
1000
|
"uses_garage": "Utiliza cochera",
|
|
1000
|
-
"file": "
|
|
1001
|
+
"file": "Empleados a subir",
|
|
1001
1002
|
"file_placeholder": "Seleccione el archivo",
|
|
1002
1003
|
"file_required": "El archivo es requerido",
|
|
1003
1004
|
"massive_charge_description": "Utilice el siguiente documento como base para cargar masivamente:",
|
|
@@ -570,6 +570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
570
570
|
|
|
571
571
|
class DateFieldComponent extends BaseFieldComponent {
|
|
572
572
|
elementRef;
|
|
573
|
+
isPickerOpen = false;
|
|
573
574
|
minDate = computed(() => {
|
|
574
575
|
const fieldCfg = this.field();
|
|
575
576
|
const dateConfig = fieldCfg.dateConfig;
|
|
@@ -665,8 +666,12 @@ class DateFieldComponent extends BaseFieldComponent {
|
|
|
665
666
|
initializeDateInput() {
|
|
666
667
|
const input = this.elementRef.nativeElement.querySelector('input[type="date"]');
|
|
667
668
|
if (input) {
|
|
668
|
-
input.addEventListener('
|
|
669
|
-
|
|
669
|
+
input.addEventListener('blur', () => {
|
|
670
|
+
this.isPickerOpen = false;
|
|
671
|
+
});
|
|
672
|
+
input.addEventListener('change', () => {
|
|
673
|
+
this.isPickerOpen = false;
|
|
674
|
+
});
|
|
670
675
|
input.addEventListener('input', this.updateHasValue.bind(this));
|
|
671
676
|
this.updateHasValue({ target: input });
|
|
672
677
|
}
|
|
@@ -674,19 +679,27 @@ class DateFieldComponent extends BaseFieldComponent {
|
|
|
674
679
|
removeDateInputListeners() {
|
|
675
680
|
const input = this.elementRef.nativeElement.querySelector('input[type="date"]');
|
|
676
681
|
if (input) {
|
|
677
|
-
input.removeEventListener('
|
|
678
|
-
|
|
682
|
+
input.removeEventListener('blur', () => {
|
|
683
|
+
this.isPickerOpen = false;
|
|
684
|
+
});
|
|
685
|
+
input.removeEventListener('change', () => {
|
|
686
|
+
this.isPickerOpen = false;
|
|
687
|
+
});
|
|
679
688
|
input.removeEventListener('input', this.updateHasValue.bind(this));
|
|
680
689
|
}
|
|
681
690
|
}
|
|
682
|
-
showDatePicker(
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
691
|
+
showDatePicker(input) {
|
|
692
|
+
if (!this.isPickerOpen) {
|
|
693
|
+
try {
|
|
694
|
+
if (input.showPicker && typeof input.showPicker === 'function') {
|
|
695
|
+
input.showPicker();
|
|
696
|
+
this.isPickerOpen = true;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
catch (error) {
|
|
700
|
+
this.isPickerOpen = false;
|
|
687
701
|
}
|
|
688
702
|
}
|
|
689
|
-
catch (error) { }
|
|
690
703
|
}
|
|
691
704
|
updateHasValue(event) {
|
|
692
705
|
if (event.target.value) {
|
|
@@ -700,13 +713,19 @@ class DateFieldComponent extends BaseFieldComponent {
|
|
|
700
713
|
this.onBlur();
|
|
701
714
|
}
|
|
702
715
|
onCalendarClick(event) {
|
|
716
|
+
event.preventDefault();
|
|
717
|
+
event.stopPropagation();
|
|
703
718
|
const button = event.target;
|
|
704
719
|
const input = button?.closest('.c-entry-input')?.querySelector('input[type="date"]');
|
|
705
|
-
if (input
|
|
706
|
-
|
|
707
|
-
input.
|
|
720
|
+
if (input) {
|
|
721
|
+
if (this.isPickerOpen) {
|
|
722
|
+
input.blur();
|
|
723
|
+
this.isPickerOpen = false;
|
|
724
|
+
}
|
|
725
|
+
else {
|
|
726
|
+
input.focus();
|
|
727
|
+
this.showDatePicker(input);
|
|
708
728
|
}
|
|
709
|
-
catch (error) { }
|
|
710
729
|
}
|
|
711
730
|
}
|
|
712
731
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DateFieldComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -4984,9 +5003,11 @@ class MultiEntryFieldComponent {
|
|
|
4984
5003
|
valueChange = output();
|
|
4985
5004
|
onBlurEvent = output();
|
|
4986
5005
|
onEnterEvent = output();
|
|
5006
|
+
hasErrors = output();
|
|
4987
5007
|
ModalMode = ModalMode;
|
|
4988
5008
|
entries = signal([]);
|
|
4989
5009
|
fieldValues = signal([]);
|
|
5010
|
+
entryErrors = signal(new Map());
|
|
4990
5011
|
isSyncingFromInput = signal(false);
|
|
4991
5012
|
lastInputSignature = null;
|
|
4992
5013
|
lastEmittedSignature = null;
|
|
@@ -5087,6 +5108,11 @@ class MultiEntryFieldComponent {
|
|
|
5087
5108
|
if (matchesLastEmitted) {
|
|
5088
5109
|
this.lastEmittedSignature = signature;
|
|
5089
5110
|
}
|
|
5111
|
+
newEntries.forEach((entry, index) => {
|
|
5112
|
+
if (entry.value !== null && entry.value !== undefined && entry.value !== '') {
|
|
5113
|
+
this.validateEntry(entry.value, index);
|
|
5114
|
+
}
|
|
5115
|
+
});
|
|
5090
5116
|
}
|
|
5091
5117
|
finally {
|
|
5092
5118
|
this.isSyncingFromInput.set(false);
|
|
@@ -5116,6 +5142,18 @@ class MultiEntryFieldComponent {
|
|
|
5116
5142
|
const newValues = currentValues.filter((_, i) => i !== index);
|
|
5117
5143
|
this.entries.set(newEntries);
|
|
5118
5144
|
this.fieldValues.set(newValues);
|
|
5145
|
+
const currentErrors = new Map(this.entryErrors());
|
|
5146
|
+
const newErrors = new Map();
|
|
5147
|
+
currentErrors.forEach((errors, idx) => {
|
|
5148
|
+
if (idx < index) {
|
|
5149
|
+
newErrors.set(idx, errors);
|
|
5150
|
+
}
|
|
5151
|
+
else if (idx > index) {
|
|
5152
|
+
newErrors.set(idx - 1, errors);
|
|
5153
|
+
}
|
|
5154
|
+
});
|
|
5155
|
+
this.entryErrors.set(newErrors);
|
|
5156
|
+
this.hasErrors.emit(newErrors.size > 0);
|
|
5119
5157
|
}
|
|
5120
5158
|
}
|
|
5121
5159
|
onFieldValueChange(value, index) {
|
|
@@ -5125,6 +5163,43 @@ class MultiEntryFieldComponent {
|
|
|
5125
5163
|
const currentEntries = [...this.entries()];
|
|
5126
5164
|
currentEntries[index].value = value;
|
|
5127
5165
|
this.entries.set(currentEntries);
|
|
5166
|
+
this.validateEntry(value, index);
|
|
5167
|
+
}
|
|
5168
|
+
validateEntry(value, index) {
|
|
5169
|
+
const validators = this.getCurrentValidators();
|
|
5170
|
+
const errors = [];
|
|
5171
|
+
for (const validator of validators) {
|
|
5172
|
+
const control = { value };
|
|
5173
|
+
const validationResult = validator(control);
|
|
5174
|
+
if (validationResult) {
|
|
5175
|
+
const errorKeys = Object.keys(validationResult);
|
|
5176
|
+
const baseField = this.field();
|
|
5177
|
+
for (const errorKey of errorKeys) {
|
|
5178
|
+
const errorMessage = baseField.errorMessages?.[errorKey];
|
|
5179
|
+
if (errorMessage) {
|
|
5180
|
+
errors.push(errorMessage);
|
|
5181
|
+
}
|
|
5182
|
+
else {
|
|
5183
|
+
errors.push(`Validation error: ${errorKey}`);
|
|
5184
|
+
}
|
|
5185
|
+
}
|
|
5186
|
+
}
|
|
5187
|
+
}
|
|
5188
|
+
const currentErrors = new Map(this.entryErrors());
|
|
5189
|
+
if (errors.length > 0) {
|
|
5190
|
+
currentErrors.set(index, errors);
|
|
5191
|
+
}
|
|
5192
|
+
else {
|
|
5193
|
+
currentErrors.delete(index);
|
|
5194
|
+
}
|
|
5195
|
+
this.entryErrors.set(currentErrors);
|
|
5196
|
+
this.hasErrors.emit(currentErrors.size > 0);
|
|
5197
|
+
}
|
|
5198
|
+
getEntryErrors(index) {
|
|
5199
|
+
return this.entryErrors().get(index) || [];
|
|
5200
|
+
}
|
|
5201
|
+
hasAnyErrors() {
|
|
5202
|
+
return this.entryErrors().size > 0;
|
|
5128
5203
|
}
|
|
5129
5204
|
onFieldBlur(fieldKey) {
|
|
5130
5205
|
this.onBlurEvent.emit(fieldKey);
|
|
@@ -5217,7 +5292,7 @@ class MultiEntryFieldComponent {
|
|
|
5217
5292
|
}
|
|
5218
5293
|
}
|
|
5219
5294
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MultiEntryFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5220
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MultiEntryFieldComponent, isStandalone: true, selector: "core-multi-entry-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, rowData: { classPropertyName: "rowData", publicName: "rowData", isSignal: true, isRequired: false, transformFunction: null }, formValue: { classPropertyName: "formValue", publicName: "formValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", onBlurEvent: "onBlurEvent", onEnterEvent: "onEnterEvent" }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo din\u00E1mico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"
|
|
5295
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: MultiEntryFieldComponent, isStandalone: true, selector: "core-multi-entry-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, rowData: { classPropertyName: "rowData", publicName: "rowData", isSignal: true, isRequired: false, transformFunction: null }, formValue: { classPropertyName: "formValue", publicName: "formValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", onBlurEvent: "onBlurEvent", onEnterEvent: "onEnterEvent", hasErrors: "hasErrors" }, hostDirectives: [{ directive: CoreHostDirective }], ngImport: i0, template: "<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo din\u00E1mico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"getEntryErrors(index)\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"onFieldValueChange($event, index)\"\n (onBlurEvent)=\"onFieldBlur($event)\"\n (onEnterEvent)=\"onFieldEnter($event)\">\n </div>\n\n <!-- Botones de acci\u00F3n (agregar/eliminar) -->\n @if (shouldShowActions(index)) {\n <div class=\"c-entry-actions\">\n @if (shouldShowAddButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--add\"\n (click)=\"addEntry()\"\n [disabled]=\"isDisabled()\"\n [title]=\"addLabel() | translate\"\n [attr.aria-label]=\"addLabel() | translate\">\n <span class=\"icon-counter-up\"></span>\n {{ addLabel() | translate }}\n </button>\n }\n \n @if (shouldShowRemoveButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--remove\"\n (click)=\"removeEntry(index)\"\n [disabled]=\"isDisabled()\"\n [title]=\"removeLabel() | translate\"\n [attr.aria-label]=\"removeLabel() | translate\">\n <span class=\"icon-counter-down\"></span>\n {{ removeLabel() | translate }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Errores del campo principal (solo si hay errores globales) -->\n @if (errors().length > 0) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: DynamicFieldDirective, selector: "[coreDynamicField]", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent", "selectionChange"] }, { kind: "component", type: FieldErrorsComponent, selector: "core-field-errors", inputs: ["errors"] }] });
|
|
5221
5296
|
}
|
|
5222
5297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: MultiEntryFieldComponent, decorators: [{
|
|
5223
5298
|
type: Component,
|
|
@@ -5228,7 +5303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
5228
5303
|
TranslateModule,
|
|
5229
5304
|
DynamicFieldDirective,
|
|
5230
5305
|
FieldErrorsComponent
|
|
5231
|
-
], hostDirectives: [CoreHostDirective], template: "<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo din\u00E1mico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"
|
|
5306
|
+
], hostDirectives: [CoreHostDirective], template: "<div class=\"c-entry-group\">\n @for (entry of entries(); track entry.id; let index = $index) {\n <div class=\"c-entry-item\">\n <!-- Campo din\u00E1mico para cada entrada -->\n <div\n coreDynamicField\n [field]=\"createFieldConfigForEntry(index)\"\n [value]=\"entry.value\"\n [mode]=\"mode()\"\n [errors]=\"getEntryErrors(index)\"\n [rowData]=\"rowData()\"\n [formValue]=\"formValue()\"\n (valueChange)=\"onFieldValueChange($event, index)\"\n (onBlurEvent)=\"onFieldBlur($event)\"\n (onEnterEvent)=\"onFieldEnter($event)\">\n </div>\n\n <!-- Botones de acci\u00F3n (agregar/eliminar) -->\n @if (shouldShowActions(index)) {\n <div class=\"c-entry-actions\">\n @if (shouldShowAddButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--add\"\n (click)=\"addEntry()\"\n [disabled]=\"isDisabled()\"\n [title]=\"addLabel() | translate\"\n [attr.aria-label]=\"addLabel() | translate\">\n <span class=\"icon-counter-up\"></span>\n {{ addLabel() | translate }}\n </button>\n }\n \n @if (shouldShowRemoveButton(index)) {\n <button \n type=\"button\"\n class=\"c-entry-action c-entry-action--remove\"\n (click)=\"removeEntry(index)\"\n [disabled]=\"isDisabled()\"\n [title]=\"removeLabel() | translate\"\n [attr.aria-label]=\"removeLabel() | translate\">\n <span class=\"icon-counter-down\"></span>\n {{ removeLabel() | translate }}\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Errores del campo principal (solo si hay errores globales) -->\n @if (errors().length > 0) {\n <core-field-errors [errors]=\"errors()\"></core-field-errors>\n }\n</div>\n" }]
|
|
5232
5307
|
}], ctorParameters: () => [] });
|
|
5233
5308
|
|
|
5234
5309
|
class SmartFieldComponent {
|
|
@@ -5276,7 +5351,7 @@ class SmartFieldComponent {
|
|
|
5276
5351
|
(selectionChange)="selectionChange.emit($event)">
|
|
5277
5352
|
</div>
|
|
5278
5353
|
}
|
|
5279
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: DynamicFieldDirective, selector: "[coreDynamicField]", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent", "selectionChange"] }, { kind: "component", type: MultiEntryFieldComponent, selector: "core-multi-entry-field", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent"] }] });
|
|
5354
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: DynamicFieldDirective, selector: "[coreDynamicField]", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent", "selectionChange"] }, { kind: "component", type: MultiEntryFieldComponent, selector: "core-multi-entry-field", inputs: ["field", "value", "mode", "errors", "rowData", "formValue"], outputs: ["valueChange", "onBlurEvent", "onEnterEvent", "hasErrors"] }] });
|
|
5280
5355
|
}
|
|
5281
5356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SmartFieldComponent, decorators: [{
|
|
5282
5357
|
type: Component,
|
|
@@ -16141,12 +16216,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
16141
16216
|
// Este archivo es generado automáticamente por scripts/update-version.js
|
|
16142
16217
|
// No edites manualmente este archivo
|
|
16143
16218
|
const VERSION = {
|
|
16144
|
-
full: '2.15.
|
|
16219
|
+
full: '2.15.33',
|
|
16145
16220
|
major: 2,
|
|
16146
16221
|
minor: 15,
|
|
16147
|
-
patch:
|
|
16148
|
-
timestamp: '2025-11-
|
|
16149
|
-
buildDate: '
|
|
16222
|
+
patch: 33,
|
|
16223
|
+
timestamp: '2025-11-12T13:53:53.157Z',
|
|
16224
|
+
buildDate: '12/11/2025'
|
|
16150
16225
|
};
|
|
16151
16226
|
|
|
16152
16227
|
class MainNavComponent {
|