ui-core-abv 0.6.76 → 0.6.81
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/fesm2022/ui-core-abv.mjs +275 -55
- package/fesm2022/ui-core-abv.mjs.map +1 -1
- package/lib/components/dynamic-form/form/dynamic-form.component.d.ts +6 -0
- package/lib/components/dynamic-form/form.models.d.ts +10 -1
- package/lib/components/user-formbuilder/block-editor/block-editor.component.d.ts +5 -1
- package/lib/components/user-formbuilder/block-editor/field-editor/field-editor.component.d.ts +9 -1
- package/lib/components/user-formbuilder/user-formbuilder.component.d.ts +1 -0
- package/lib/translate/dictionary.en.d.ts +12 -0
- package/lib/translate/dictionary.es.d.ts +19 -7
- package/package.json +1 -1
package/fesm2022/ui-core-abv.mjs
CHANGED
|
@@ -388,6 +388,8 @@ const DICTIONARY_EN = {
|
|
|
388
388
|
block_subtitle: 'Subtitle',
|
|
389
389
|
add_block: 'Add block',
|
|
390
390
|
delete_block: 'Delete block',
|
|
391
|
+
delete_block_dependency_blocked: 'This block cannot be deleted because it contains fields that other fields depend on',
|
|
392
|
+
delete_field_dependency_blocked: 'This field cannot be deleted because another field depends on its value',
|
|
391
393
|
preview_form: 'Preview',
|
|
392
394
|
submit_form: 'Submit',
|
|
393
395
|
select_field_to_edit: 'Select a field to edit its properties',
|
|
@@ -512,6 +514,16 @@ const DICTIONARY_EN = {
|
|
|
512
514
|
show_advanced: 'Show advanced',
|
|
513
515
|
hide_advanced: 'Hide advanced',
|
|
514
516
|
},
|
|
517
|
+
visibility_operators: {
|
|
518
|
+
equals: 'Equals',
|
|
519
|
+
notEquals: 'Does not equal',
|
|
520
|
+
greaterThan: 'Is greater than',
|
|
521
|
+
lessThan: 'Is less than',
|
|
522
|
+
includes: 'Includes',
|
|
523
|
+
notIncludes: 'Does not include',
|
|
524
|
+
isEmpty: 'Is empty',
|
|
525
|
+
isNotEmpty: 'Is not empty',
|
|
526
|
+
},
|
|
515
527
|
validation: {
|
|
516
528
|
duplicate_identifier: 'The identifier "{{identifier}}" is used more than once.',
|
|
517
529
|
duplicate_identifier_title: 'Validation error',
|
|
@@ -691,6 +703,8 @@ const DICTIONARY_ES = {
|
|
|
691
703
|
block_subtitle: 'Subtítulo',
|
|
692
704
|
add_block: 'Agregar bloque',
|
|
693
705
|
delete_block: 'Eliminar bloque',
|
|
706
|
+
delete_block_dependency_blocked: 'Este bloque no se puede eliminar porque contiene campos de los que dependen otros campos',
|
|
707
|
+
delete_field_dependency_blocked: 'Este campo no se puede eliminar porque otro campo depende de su valor',
|
|
694
708
|
preview_form: 'Vista previa',
|
|
695
709
|
submit_form: 'Guardar',
|
|
696
710
|
select_field_to_edit: 'Selecciona un campo para editar sus propiedades',
|
|
@@ -773,16 +787,16 @@ const DICTIONARY_ES = {
|
|
|
773
787
|
iaValidation: 'Validación IA',
|
|
774
788
|
iaValidationPrompt: 'Prompt de validación IA',
|
|
775
789
|
searchApi_tip: 'URL para obtener opciones de búsqueda',
|
|
776
|
-
optionsSourceKey: '
|
|
777
|
-
optionsSourceKey_tip: '
|
|
778
|
-
optionsSourceIdField: '
|
|
779
|
-
optionsSourceIdField_tip: '
|
|
780
|
-
optionsSourceTextField: '
|
|
781
|
-
optionsSourceTextField_tip: '
|
|
790
|
+
optionsSourceKey: 'Origen de opciones',
|
|
791
|
+
optionsSourceKey_tip: 'Opciones manuales o API externa',
|
|
792
|
+
optionsSourceIdField: 'Nombre de campo ID',
|
|
793
|
+
optionsSourceIdField_tip: 'Propiedad del objeto para usar como ID',
|
|
794
|
+
optionsSourceTextField: 'Nombre de campo de texto',
|
|
795
|
+
optionsSourceTextField_tip: 'Propiedad del objeto para mostrar',
|
|
782
796
|
optionsSourceTextTemplate: 'Plantilla de texto',
|
|
783
797
|
optionsSourceTextTemplate_tip: 'Ejemplo: {{name}} ({{id}})',
|
|
784
798
|
optionsSourceDependsOn: 'Depende de',
|
|
785
|
-
optionsSourceDependsOn_tip: '
|
|
799
|
+
optionsSourceDependsOn_tip: 'Campo para filtrar opciones según valor',
|
|
786
800
|
optionsSourceParamName: 'Nombre del parámetro',
|
|
787
801
|
optionsSourceParamName_tip: 'Nombre con el que se envía el valor dependiente',
|
|
788
802
|
selectNullable_tip: 'Permite seleccionar una opción vacía',
|
|
@@ -815,6 +829,16 @@ const DICTIONARY_ES = {
|
|
|
815
829
|
show_advanced: 'Mostrar avanzado',
|
|
816
830
|
hide_advanced: 'Ocultar avanzado',
|
|
817
831
|
},
|
|
832
|
+
visibility_operators: {
|
|
833
|
+
equals: 'Es igual a',
|
|
834
|
+
notEquals: 'No es igual a',
|
|
835
|
+
greaterThan: 'Es mayor que',
|
|
836
|
+
lessThan: 'Es menor que',
|
|
837
|
+
includes: 'Incluye',
|
|
838
|
+
notIncludes: 'No incluye',
|
|
839
|
+
isEmpty: 'Está vacío',
|
|
840
|
+
isNotEmpty: 'No está vacío',
|
|
841
|
+
},
|
|
818
842
|
validation: {
|
|
819
843
|
duplicate_identifier: 'El identificador "{{identifier}}" se está usando más de una vez.',
|
|
820
844
|
duplicate_identifier_title: 'Error de validación',
|
|
@@ -3995,7 +4019,13 @@ class UicDynamicFormComponent {
|
|
|
3995
4019
|
}
|
|
3996
4020
|
matchesVisibilityRule(rule) {
|
|
3997
4021
|
const currentValue = this.getValueByFieldName(rule.fieldName);
|
|
4022
|
+
const dependencyField = this.findFieldByName(rule.fieldName);
|
|
4023
|
+
const dependencyType = dependencyField?.type;
|
|
3998
4024
|
switch (rule.operator) {
|
|
4025
|
+
case 'isEmpty':
|
|
4026
|
+
return this.isEmptyValue(currentValue);
|
|
4027
|
+
case 'isNotEmpty':
|
|
4028
|
+
return !this.isEmptyValue(currentValue);
|
|
3999
4029
|
case 'equals': {
|
|
4000
4030
|
if (typeof currentValue === 'boolean') {
|
|
4001
4031
|
const normalizedRuleValue = this.parseBooleanLike(rule.value);
|
|
@@ -4003,7 +4033,7 @@ class UicDynamicFormComponent {
|
|
|
4003
4033
|
return currentValue === normalizedRuleValue;
|
|
4004
4034
|
}
|
|
4005
4035
|
}
|
|
4006
|
-
return currentValue
|
|
4036
|
+
return currentValue == rule.value;
|
|
4007
4037
|
}
|
|
4008
4038
|
case 'notEquals': {
|
|
4009
4039
|
if (typeof currentValue === 'boolean') {
|
|
@@ -4012,27 +4042,33 @@ class UicDynamicFormComponent {
|
|
|
4012
4042
|
return currentValue !== normalizedRuleValue;
|
|
4013
4043
|
}
|
|
4014
4044
|
}
|
|
4015
|
-
return currentValue
|
|
4045
|
+
return currentValue != rule.value;
|
|
4016
4046
|
}
|
|
4017
4047
|
case 'greaterThan':
|
|
4018
|
-
return
|
|
4048
|
+
return this.compareVisibilityValues(currentValue, rule.value, dependencyType) > 0;
|
|
4019
4049
|
case 'lessThan':
|
|
4020
|
-
return
|
|
4050
|
+
return this.compareVisibilityValues(currentValue, rule.value, dependencyType) < 0;
|
|
4021
4051
|
case 'includes':
|
|
4052
|
+
if (dependencyType === 'phone') {
|
|
4053
|
+
return this.getPhoneComparableValue(currentValue).includes(String(rule.value ?? ''));
|
|
4054
|
+
}
|
|
4022
4055
|
if (currentValue == null)
|
|
4023
4056
|
return false;
|
|
4024
4057
|
if (Array.isArray(currentValue)) {
|
|
4025
|
-
return
|
|
4058
|
+
return this.arrayIncludesVisibilityValue(currentValue, rule.value);
|
|
4026
4059
|
}
|
|
4027
4060
|
if (typeof currentValue === 'string') {
|
|
4028
4061
|
return currentValue.includes(rule.value);
|
|
4029
4062
|
}
|
|
4030
4063
|
return false;
|
|
4031
4064
|
case 'notIncludes':
|
|
4065
|
+
if (dependencyType === 'phone') {
|
|
4066
|
+
return !this.getPhoneComparableValue(currentValue).includes(String(rule.value ?? ''));
|
|
4067
|
+
}
|
|
4032
4068
|
if (currentValue == null)
|
|
4033
4069
|
return true;
|
|
4034
4070
|
if (Array.isArray(currentValue)) {
|
|
4035
|
-
return !
|
|
4071
|
+
return !this.arrayIncludesVisibilityValue(currentValue, rule.value);
|
|
4036
4072
|
}
|
|
4037
4073
|
if (typeof currentValue === 'string') {
|
|
4038
4074
|
return !currentValue.includes(rule.value);
|
|
@@ -4042,6 +4078,61 @@ class UicDynamicFormComponent {
|
|
|
4042
4078
|
return true;
|
|
4043
4079
|
}
|
|
4044
4080
|
}
|
|
4081
|
+
findFieldByName(fieldName) {
|
|
4082
|
+
return this.fieldsSignal().find(field => field.name === fieldName);
|
|
4083
|
+
}
|
|
4084
|
+
isEmptyValue(value) {
|
|
4085
|
+
if (value === null || value === undefined)
|
|
4086
|
+
return true;
|
|
4087
|
+
if (typeof value === 'string')
|
|
4088
|
+
return value.trim().length === 0;
|
|
4089
|
+
if (Array.isArray(value))
|
|
4090
|
+
return value.length === 0;
|
|
4091
|
+
if (typeof value === 'object')
|
|
4092
|
+
return Object.keys(value).length === 0;
|
|
4093
|
+
return false;
|
|
4094
|
+
}
|
|
4095
|
+
compareVisibilityValues(currentValue, ruleValue, fieldType) {
|
|
4096
|
+
const currentComparable = this.toComparableVisibilityValue(currentValue, fieldType);
|
|
4097
|
+
const ruleComparable = this.toComparableVisibilityValue(ruleValue, fieldType);
|
|
4098
|
+
if (currentComparable === null || ruleComparable === null) {
|
|
4099
|
+
return Number.NaN;
|
|
4100
|
+
}
|
|
4101
|
+
return currentComparable - ruleComparable;
|
|
4102
|
+
}
|
|
4103
|
+
toComparableVisibilityValue(value, fieldType) {
|
|
4104
|
+
if (value === null || value === undefined || value === '')
|
|
4105
|
+
return null;
|
|
4106
|
+
if (fieldType === 'date') {
|
|
4107
|
+
const timestamp = Date.parse(String(value));
|
|
4108
|
+
return Number.isNaN(timestamp) ? null : timestamp;
|
|
4109
|
+
}
|
|
4110
|
+
if (fieldType === 'time') {
|
|
4111
|
+
const match = String(value).match(/^(\d{1,2}):(\d{2})$/);
|
|
4112
|
+
if (!match)
|
|
4113
|
+
return null;
|
|
4114
|
+
const hours = Number(match[1]);
|
|
4115
|
+
const minutes = Number(match[2]);
|
|
4116
|
+
if (!Number.isFinite(hours) || !Number.isFinite(minutes))
|
|
4117
|
+
return null;
|
|
4118
|
+
return hours * 60 + minutes;
|
|
4119
|
+
}
|
|
4120
|
+
const numericValue = Number(value);
|
|
4121
|
+
return Number.isNaN(numericValue) ? null : numericValue;
|
|
4122
|
+
}
|
|
4123
|
+
getPhoneComparableValue(value) {
|
|
4124
|
+
if (!value)
|
|
4125
|
+
return '';
|
|
4126
|
+
if (typeof value === 'string')
|
|
4127
|
+
return value;
|
|
4128
|
+
if (typeof value === 'object') {
|
|
4129
|
+
return String(value.internationalNumber ?? '');
|
|
4130
|
+
}
|
|
4131
|
+
return '';
|
|
4132
|
+
}
|
|
4133
|
+
arrayIncludesVisibilityValue(values, ruleValue) {
|
|
4134
|
+
return values.some(value => value == ruleValue);
|
|
4135
|
+
}
|
|
4045
4136
|
parseBooleanLike(value) {
|
|
4046
4137
|
if (typeof value === 'boolean')
|
|
4047
4138
|
return value;
|
|
@@ -8472,22 +8563,32 @@ const simpleFade = trigger('simpleFade', [
|
|
|
8472
8563
|
]);
|
|
8473
8564
|
|
|
8474
8565
|
;
|
|
8566
|
+
const VISIBILITY_OPERATOR_OPTIONS = [
|
|
8567
|
+
{ id: 'equals', text: 'equals' },
|
|
8568
|
+
{ id: 'notEquals', text: 'notEquals' },
|
|
8569
|
+
{ id: 'greaterThan', text: 'greaterThan' },
|
|
8570
|
+
{ id: 'lessThan', text: 'lessThan' },
|
|
8571
|
+
{ id: 'includes', text: 'includes' },
|
|
8572
|
+
{ id: 'notIncludes', text: 'notIncludes' },
|
|
8573
|
+
{ id: 'isEmpty', text: 'isEmpty' },
|
|
8574
|
+
{ id: 'isNotEmpty', text: 'isNotEmpty' }
|
|
8575
|
+
];
|
|
8475
8576
|
const FIELDS_CONFIG = [
|
|
8476
|
-
{ value: 'text', icon: 'ri-text', detail: 'Campo de texto en una sola linea', label: 'Texto corto', properties: ['placeholder', 'minLength', 'maxLength', 'showCounter'] },
|
|
8477
|
-
{ value: 'textarea', icon: 'ri-file-text-line', detail: 'Texto multilinea con ajuste de altura', label: 'Area de texto', properties: ['placeholder', 'minLength', 'maxLength', 'showCounter', 'voiceToTextEnabled', 'textareaResize', 'resizeMinRows', 'resizeMaxRows'] },
|
|
8478
|
-
{ value: 'number', icon: 'ri-hashtag', detail: 'Campo numerico con control de paso', label: 'Numero', properties: ['placeholder', 'step', 'min', 'max'] },
|
|
8479
|
-
{ value: 'phone', icon: 'ri-phone-line', detail: 'Telefono con pais y codigo', label: 'Telefono', properties: ['placeholder'] },
|
|
8480
|
-
{ value: 'select', icon: 'ri-
|
|
8481
|
-
{ value: 'multyselect', icon: 'ri-
|
|
8482
|
-
{ value: 'date', icon: 'ri-calendar-2-line', detail: 'Selector de fecha o mes', label: 'Fecha', properties: ['monthMode', 'monthDay', 'minDate', 'maxDate'] },
|
|
8483
|
-
{ value: 'time', icon: 'ri-timer-2-line', detail: 'Selector de hora', label: 'Hora', properties: ['timeInterval'] },
|
|
8484
|
-
{ value: 'radio', icon: 'ri-radio-button-line', detail: 'Seleccion unica entre opciones', label: 'Radio', properties: ['options'] },
|
|
8485
|
-
{ value: 'checkbox', icon: 'ri-checkbox-line', detail: 'Campo booleano tipo check', label: 'Checkbox', properties: ['placeholder'] },
|
|
8486
|
-
{ value: 'switch', icon: 'ri-toggle-line', detail: 'Campo booleano tipo switch', label: 'Switch', properties: ['placeholder'] },
|
|
8487
|
-
{ value: 'pool', icon: 'ri-
|
|
8488
|
-
{ value: 'file', icon: 'ri-attachment-line', detail: 'Carga de archivos', label: 'Archivo', properties: ['multyEnabled', 'fileTypes', 'iaValidation', 'iaValidationPrompt'] },
|
|
8489
|
-
{ value: 'searcher', icon: 'ri-seo-line', detail: 'Buscador con fuente de datos externa', label: 'Buscador', properties: ['placeholder', 'optionsSource.key', 'optionsSource.idField', 'optionsSource.textField', 'optionsSource.textTemplate', 'optionsSource.dependsOn', 'optionsSource.paramName'] },
|
|
8490
|
-
{ value: 'slider', icon: 'ri-equalizer-2-line', detail: 'Control deslizante continuo', label: 'Deslizador', properties: ['min', 'max', 'sliderInterval', 'sliderMarks'] }
|
|
8577
|
+
{ value: 'text', icon: 'ri-text', detail: 'Campo de texto en una sola linea', label: 'Texto corto', properties: ['placeholder', 'minLength', 'maxLength', 'showCounter'], visibility: { outputType: 'string', operators: ['equals', 'notEquals', 'includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8578
|
+
{ value: 'textarea', icon: 'ri-file-text-line', detail: 'Texto multilinea con ajuste de altura', label: 'Area de texto', properties: ['placeholder', 'minLength', 'maxLength', 'showCounter', 'voiceToTextEnabled', 'textareaResize', 'resizeMinRows', 'resizeMaxRows'], visibility: { outputType: 'string', operators: ['equals', 'notEquals', 'includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8579
|
+
{ value: 'number', icon: 'ri-hashtag', detail: 'Campo numerico con control de paso', label: 'Numero', properties: ['placeholder', 'step', 'min', 'max'], visibility: { outputType: 'number', operators: ['equals', 'notEquals', 'greaterThan', 'lessThan', 'isEmpty', 'isNotEmpty'] } },
|
|
8580
|
+
{ value: 'phone', icon: 'ri-phone-line', detail: 'Telefono con pais y codigo', label: 'Telefono', properties: ['placeholder'], visibility: { outputType: 'UicPhoneInputValue', operators: ['includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8581
|
+
{ value: 'select', icon: 'ri-arrow-drop-down-line', detail: 'Seleccion simple desde opciones', label: 'Selector', properties: ['options', 'selectSearchEnabled', 'selectNullable'], visibility: { outputType: 'string', operators: ['equals', 'notEquals', 'includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8582
|
+
{ value: 'multyselect', icon: 'ri-arrow-down-double-line', detail: 'Seleccion multiple desde opciones', label: 'Selector multiple', properties: ['options'], visibility: { outputType: 'string[]', operators: ['includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8583
|
+
{ value: 'date', icon: 'ri-calendar-2-line', detail: 'Selector de fecha o mes', label: 'Fecha', properties: ['monthMode', 'monthDay', 'minDate', 'maxDate'], visibility: { outputType: 'string yyyy-MM-dd', operators: ['equals', 'notEquals', 'greaterThan', 'lessThan', 'isEmpty', 'isNotEmpty'] } },
|
|
8584
|
+
{ value: 'time', icon: 'ri-timer-2-line', detail: 'Selector de hora', label: 'Hora', properties: ['timeInterval'], visibility: { outputType: 'string HH:mm', operators: ['equals', 'notEquals', 'greaterThan', 'lessThan', 'isEmpty', 'isNotEmpty'] } },
|
|
8585
|
+
{ value: 'radio', icon: 'ri-radio-button-line', detail: 'Seleccion unica entre opciones', label: 'Radio', properties: ['options'], visibility: { outputType: 'string', operators: ['equals', 'notEquals', 'includes', 'notIncludes', 'isEmpty', 'isNotEmpty'] } },
|
|
8586
|
+
{ value: 'checkbox', icon: 'ri-checkbox-line', detail: 'Campo booleano tipo check', label: 'Checkbox', properties: ['placeholder'], visibility: { outputType: 'boolean', operators: ['equals', 'notEquals', 'isEmpty', 'isNotEmpty'] } },
|
|
8587
|
+
{ value: 'switch', icon: 'ri-toggle-line', detail: 'Campo booleano tipo switch', label: 'Switch', properties: ['placeholder'], visibility: { outputType: 'boolean', operators: ['equals', 'notEquals', 'isEmpty', 'isNotEmpty'] } },
|
|
8588
|
+
{ value: 'pool', icon: 'ri-bubble-chart-line', detail: 'Seleccion con lista y detalle por item', label: 'Pool de opciones', properties: ['options', 'multyEnabled', 'poolEnabledListView', 'poolTitle'], visibility: { outputType: 'selectedDetailed[]', operators: ['isEmpty', 'isNotEmpty'] } },
|
|
8589
|
+
{ value: 'file', icon: 'ri-attachment-line', detail: 'Carga de archivos', label: 'Archivo', properties: ['multyEnabled', 'fileTypes', 'iaValidation', 'iaValidationPrompt'], visibility: { outputType: 'UicFileInputValue[]', operators: ['isEmpty', 'isNotEmpty'] } },
|
|
8590
|
+
{ value: 'searcher', icon: 'ri-seo-line', detail: 'Buscador con fuente de datos externa', label: 'Buscador', properties: ['placeholder', 'optionsSource.key', 'optionsSource.idField', 'optionsSource.textField', 'optionsSource.textTemplate', 'optionsSource.dependsOn', 'optionsSource.paramName'], visibility: { outputType: 'object', operators: ['isEmpty', 'isNotEmpty'] } },
|
|
8591
|
+
{ value: 'slider', icon: 'ri-equalizer-2-line', detail: 'Control deslizante continuo', label: 'Deslizador', properties: ['min', 'max', 'sliderInterval', 'sliderMarks'], visibility: { outputType: 'number', operators: ['equals', 'notEquals', 'greaterThan', 'lessThan', 'isEmpty', 'isNotEmpty'] } }
|
|
8491
8592
|
];
|
|
8492
8593
|
const BASE_FORM_FIELDS = [
|
|
8493
8594
|
{
|
|
@@ -8698,6 +8799,11 @@ const EXTRA_FORM_FIELDS = [
|
|
|
8698
8799
|
fieldName: 'optionsSource.key',
|
|
8699
8800
|
operator: 'notEquals',
|
|
8700
8801
|
value: null
|
|
8802
|
+
},
|
|
8803
|
+
{
|
|
8804
|
+
fieldName: 'optionsSource.dependsOn',
|
|
8805
|
+
operator: 'notEquals',
|
|
8806
|
+
value: ''
|
|
8701
8807
|
}
|
|
8702
8808
|
]
|
|
8703
8809
|
},
|
|
@@ -8938,12 +9044,7 @@ const BRANCH_FORM_FIELDS = [
|
|
|
8938
9044
|
label: 'form_builder.field_editor.operator',
|
|
8939
9045
|
type: 'select',
|
|
8940
9046
|
options: [
|
|
8941
|
-
|
|
8942
|
-
{ id: 'notEquals', text: 'notEquals' },
|
|
8943
|
-
{ id: 'greaterThan', text: 'greaterThan' },
|
|
8944
|
-
{ id: 'lessThan', text: 'lessThan' },
|
|
8945
|
-
{ id: 'includes', text: 'includes' },
|
|
8946
|
-
{ id: 'notIncludes', text: 'notIncludes' }
|
|
9047
|
+
...VISIBILITY_OPERATOR_OPTIONS
|
|
8947
9048
|
],
|
|
8948
9049
|
required: true
|
|
8949
9050
|
},
|
|
@@ -9046,20 +9147,14 @@ class FieldEditorComponent {
|
|
|
9046
9147
|
optionsSourceFields = computed(() => this.buildOptionsSourceFields());
|
|
9047
9148
|
advancedFields = computed(() => (this.buildAdvancedBlocks()));
|
|
9048
9149
|
styleFields = computed(() => (this.buildDesignBlocks()));
|
|
9049
|
-
|
|
9150
|
+
branchDraftValues = signal({});
|
|
9151
|
+
branchFields = computed(() => this.buildBranchFields(this.branchDraftValues()));
|
|
9050
9152
|
initialValues = computed(() => {
|
|
9051
9153
|
const fieldData = this.config().fieldData;
|
|
9052
9154
|
return fieldData ?? {};
|
|
9053
9155
|
});
|
|
9054
9156
|
branchInitialValues = computed(() => {
|
|
9055
|
-
|
|
9056
|
-
if (!firstRule)
|
|
9057
|
-
return {};
|
|
9058
|
-
return {
|
|
9059
|
-
fieldName: firstRule.fieldName ?? null,
|
|
9060
|
-
operator: firstRule.operator ?? null,
|
|
9061
|
-
value: firstRule.value ?? null
|
|
9062
|
-
};
|
|
9157
|
+
return this.branchDraftValues();
|
|
9063
9158
|
});
|
|
9064
9159
|
/*
|
|
9065
9160
|
{
|
|
@@ -9077,6 +9172,7 @@ class FieldEditorComponent {
|
|
|
9077
9172
|
this.localField.set(field);
|
|
9078
9173
|
if (this.currentFieldCode !== config.code) {
|
|
9079
9174
|
this.currentFieldCode = config.code;
|
|
9175
|
+
this.branchDraftValues.set(this.ruleToBranchValues(field.visibilityRules?.[0]));
|
|
9080
9176
|
this.scrollPropertiesToTop();
|
|
9081
9177
|
}
|
|
9082
9178
|
});
|
|
@@ -9089,8 +9185,23 @@ class FieldEditorComponent {
|
|
|
9089
9185
|
}
|
|
9090
9186
|
updateRuleValue(fr) {
|
|
9091
9187
|
const fieldName = fr['fieldName'];
|
|
9092
|
-
const
|
|
9093
|
-
const
|
|
9188
|
+
const previousDraft = this.branchDraftValues();
|
|
9189
|
+
const parentChanged = fieldName !== previousDraft['fieldName'];
|
|
9190
|
+
const selectedOperator = (parentChanged ? null : fr['operator']);
|
|
9191
|
+
const allowedOperators = this.getAllowedVisibilityOperators(this.getDependencyFieldType(fieldName));
|
|
9192
|
+
const operator = selectedOperator && allowedOperators.includes(selectedOperator)
|
|
9193
|
+
? selectedOperator
|
|
9194
|
+
: null;
|
|
9195
|
+
const value = parentChanged || this.isValueLessVisibilityOperator(operator) ? null : fr['value'];
|
|
9196
|
+
const nextDraft = {
|
|
9197
|
+
fieldName: fieldName ?? null,
|
|
9198
|
+
operator,
|
|
9199
|
+
value
|
|
9200
|
+
};
|
|
9201
|
+
this.branchDraftValues.set(nextDraft);
|
|
9202
|
+
if (parentChanged) {
|
|
9203
|
+
this.clearCurrentVisibilityRule();
|
|
9204
|
+
}
|
|
9094
9205
|
// Ignore partial emissions while the dependency form is still incomplete.
|
|
9095
9206
|
if (!fieldName || !operator)
|
|
9096
9207
|
return;
|
|
@@ -9119,6 +9230,7 @@ class FieldEditorComponent {
|
|
|
9119
9230
|
...this.localField(),
|
|
9120
9231
|
visibilityRules: []
|
|
9121
9232
|
};
|
|
9233
|
+
this.branchDraftValues.set({});
|
|
9122
9234
|
this.localField.set(updatedField);
|
|
9123
9235
|
this.fieldChange.emit(updatedField);
|
|
9124
9236
|
}
|
|
@@ -9127,6 +9239,7 @@ class FieldEditorComponent {
|
|
|
9127
9239
|
...this.localField(),
|
|
9128
9240
|
visibilityRules: null
|
|
9129
9241
|
};
|
|
9242
|
+
this.branchDraftValues.set({});
|
|
9130
9243
|
this.localField.set(updatedField);
|
|
9131
9244
|
this.fieldChange.emit(updatedField);
|
|
9132
9245
|
}
|
|
@@ -9211,15 +9324,99 @@ class FieldEditorComponent {
|
|
|
9211
9324
|
}
|
|
9212
9325
|
return field;
|
|
9213
9326
|
}
|
|
9214
|
-
buildBranchFields() {
|
|
9327
|
+
buildBranchFields(values) {
|
|
9328
|
+
const fieldName = values['fieldName'];
|
|
9329
|
+
const dependencyType = this.getDependencyFieldType(fieldName);
|
|
9330
|
+
const allowedOperators = this.getAllowedVisibilityOperators(dependencyType);
|
|
9215
9331
|
return BRANCH_FORM_FIELDS.map(field => ({
|
|
9216
|
-
...field,
|
|
9332
|
+
...this.prepareBranchField(field, fieldName, allowedOperators),
|
|
9217
9333
|
label: this.translateService.translate(field.label ?? ''),
|
|
9218
9334
|
placeholder: field.placeholder ? this.translateService.translate(field.placeholder) : this.translateService.translate(field.label ?? '')
|
|
9219
9335
|
}));
|
|
9220
9336
|
}
|
|
9337
|
+
prepareBranchField(field, fieldName, allowedOperators) {
|
|
9338
|
+
if (field.name === 'operator') {
|
|
9339
|
+
return {
|
|
9340
|
+
...field,
|
|
9341
|
+
options: VISIBILITY_OPERATOR_OPTIONS
|
|
9342
|
+
.filter(option => allowedOperators.includes(option.id))
|
|
9343
|
+
.map(option => ({
|
|
9344
|
+
...option,
|
|
9345
|
+
text: this.translateService.translate(`form_builder.visibility_operators.${option.id}`)
|
|
9346
|
+
})),
|
|
9347
|
+
visibilityRules: [
|
|
9348
|
+
{ fieldName: 'fieldName', operator: 'notEquals', value: null },
|
|
9349
|
+
{ fieldName: 'fieldName', operator: 'notEquals', value: '' }
|
|
9350
|
+
]
|
|
9351
|
+
};
|
|
9352
|
+
}
|
|
9353
|
+
if (field.name === 'value') {
|
|
9354
|
+
const valueField = {
|
|
9355
|
+
...field,
|
|
9356
|
+
visibilityRules: [
|
|
9357
|
+
{ fieldName: 'fieldName', operator: 'notEquals', value: null },
|
|
9358
|
+
{ fieldName: 'fieldName', operator: 'notEquals', value: '' },
|
|
9359
|
+
{ fieldName: 'operator', operator: 'notEquals', value: null },
|
|
9360
|
+
{ fieldName: 'operator', operator: 'notEquals', value: '' },
|
|
9361
|
+
{ fieldName: 'operator', operator: 'notEquals', value: 'isEmpty' },
|
|
9362
|
+
{ fieldName: 'operator', operator: 'notEquals', value: 'isNotEmpty' }
|
|
9363
|
+
],
|
|
9364
|
+
type: this.getBranchValueFieldType(fieldName)
|
|
9365
|
+
};
|
|
9366
|
+
if (valueField.type === 'select') {
|
|
9367
|
+
valueField.options = [
|
|
9368
|
+
{ id: 'true', text: 'true' },
|
|
9369
|
+
{ id: 'false', text: 'false' }
|
|
9370
|
+
];
|
|
9371
|
+
}
|
|
9372
|
+
return valueField;
|
|
9373
|
+
}
|
|
9374
|
+
return field;
|
|
9375
|
+
}
|
|
9376
|
+
getAllowedVisibilityOperators(fieldType) {
|
|
9377
|
+
return FIELDS_CONFIG.find(field => field.value === fieldType)?.visibility.operators ?? [];
|
|
9378
|
+
}
|
|
9379
|
+
getDependencyFieldType(fieldName) {
|
|
9380
|
+
const option = this.options()['fieldName']?.find(item => item.id === fieldName);
|
|
9381
|
+
const type = option?.fieldType;
|
|
9382
|
+
return FIELDS_CONFIG.some(field => field.value === type) ? type : null;
|
|
9383
|
+
}
|
|
9384
|
+
getBranchValueFieldType(fieldName) {
|
|
9385
|
+
const dependencyType = this.getDependencyFieldType(fieldName);
|
|
9386
|
+
if (dependencyType === 'number' || dependencyType === 'slider')
|
|
9387
|
+
return 'number';
|
|
9388
|
+
if (dependencyType === 'date')
|
|
9389
|
+
return 'date';
|
|
9390
|
+
if (dependencyType === 'time')
|
|
9391
|
+
return 'time';
|
|
9392
|
+
if (dependencyType === 'checkbox' || dependencyType === 'switch')
|
|
9393
|
+
return 'select';
|
|
9394
|
+
return 'text';
|
|
9395
|
+
}
|
|
9396
|
+
ruleToBranchValues(rule) {
|
|
9397
|
+
if (!rule)
|
|
9398
|
+
return {};
|
|
9399
|
+
return {
|
|
9400
|
+
fieldName: rule.fieldName ?? null,
|
|
9401
|
+
operator: rule.operator ?? null,
|
|
9402
|
+
value: rule.value ?? null
|
|
9403
|
+
};
|
|
9404
|
+
}
|
|
9405
|
+
clearCurrentVisibilityRule() {
|
|
9406
|
+
if (!this.localField().visibilityRules?.length)
|
|
9407
|
+
return;
|
|
9408
|
+
const updatedField = {
|
|
9409
|
+
...this.localField(),
|
|
9410
|
+
visibilityRules: []
|
|
9411
|
+
};
|
|
9412
|
+
this.localField.set(updatedField);
|
|
9413
|
+
this.fieldChange.emit(updatedField);
|
|
9414
|
+
}
|
|
9415
|
+
isValueLessVisibilityOperator(operator) {
|
|
9416
|
+
return operator === 'isEmpty' || operator === 'isNotEmpty';
|
|
9417
|
+
}
|
|
9221
9418
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FieldEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9222
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: FieldEditorComponent, isStandalone: true, selector: "lib-field-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, focusRequiredField: { classPropertyName: "focusRequiredField", publicName: "focusRequiredField", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fieldChange: "fieldChange" }, ngImport: i0, template: "<div class=\"props-title\">{{'form_builder.field_editor.basic' | uicTranslate}} <i (click)=\"toggleSection('basic')\" class=\"{{hiddenSections().includes('basic') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('basic')\">\n <ui-form-wrapper\n [fields]=\"requiredFields\" \n [initialValues]=\"initialValues()\"\n [focusFieldName]=\"focusRequiredField() ? 'label' : null\"\n [focusFieldTrigger]=\"focusRequiredField() ? config().code : null\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptionsSourceConfig()) {\n <ui-form-wrapper\n [fields]=\"optionsSourceFields()\"\n [initialValues]=\"initialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\"\n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptions() && !hasExternalOptionsSource()) {\n <ui-field-options-editor [options]=\"localField().options ?? []\" (optionsChange)=\"updateOptions($event)\"></ui-field-options-editor>\n }\n }\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.advanced' | uicTranslate}} <i (click)=\"toggleSection('advanced')\" class=\"{{hiddenSections().includes('advanced') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('advanced')\">\n <ui-form-wrapper\n [fields]=\"advancedFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.style' | uicTranslate}} <i (click)=\"toggleSection('style')\" class=\"{{hiddenSections().includes('style') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('style')\">\n <ui-form-wrapper\n [fields]=\"styleFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\"> \n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.dependency_title' | uicTranslate}} <i (click)=\"toggleSection('dependency')\" class=\"{{hiddenSections().includes('dependency') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('dependency')\">\n @if (localField().visibilityRules ) {\n <p>{{'form_builder.field_editor.dependency_description' | uicTranslate}}</p>\n <ui-form-wrapper\n [fields]=\"branchFields\" \n [initialValues]=\"branchInitialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\" \n (formChange)=\"updateRuleValue($event)\">\n </ui-form-wrapper>\n <ui-button color=\"black\" size=\"s\" (click)=\"removeRule()\">{{'form_builder.field_editor.remove_relation' | uicTranslate}}</ui-button>\n }@else {\n <ui-button color=\"black\" size=\"s\" (click)=\"addRule()\">{{'form_builder.field_editor.add_relation' | uicTranslate}}</ui-button>\n }\n</div>\n", styles: [".hidden{display:none}.props-title{font-size:14px;font-weight:600;margin-bottom:8px;background:var(--grey-200);padding:5px;border-radius:5px;display:flex;justify-content:space-between}.props-title i{cursor:pointer}.props-inputs{padding-left:20px;margin-bottom:10px}p{font-size:14px;margin:10px 0;color:var(--yellow-800)}\n"], dependencies: [{ kind: "component", type: UicFormWrapperComponent, selector: "ui-form-wrapper", inputs: ["schema", "fields", "cols", "externalData", "selectOptionsResolver", "loading", "disabled", "showButtons", "fillSelects", "initialValues", "focusFieldName", "focusFieldTrigger", "fileUidResolverFn"], outputs: ["formSubmit", "formChange", "optionsSourceError"] }, { kind: "component", type: UicButtonComponent, selector: "ui-button", inputs: ["text", "icon", "rightIcon", "iconOnly", "disabled", "loading", "size", "type", "color"] }, { kind: "pipe", type: UicTranslatePipe, name: "uicTranslate" }, { kind: "component", type: UicFieldOptionsEditorComponent, selector: "ui-field-options-editor", inputs: ["options"], outputs: ["optionsChange"] }] });
|
|
9419
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: FieldEditorComponent, isStandalone: true, selector: "lib-field-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, focusRequiredField: { classPropertyName: "focusRequiredField", publicName: "focusRequiredField", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fieldChange: "fieldChange" }, ngImport: i0, template: "<div class=\"props-title\">{{'form_builder.field_editor.basic' | uicTranslate}} <i (click)=\"toggleSection('basic')\" class=\"{{hiddenSections().includes('basic') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('basic')\">\n <ui-form-wrapper\n [fields]=\"requiredFields\" \n [initialValues]=\"initialValues()\"\n [focusFieldName]=\"focusRequiredField() ? 'label' : null\"\n [focusFieldTrigger]=\"focusRequiredField() ? config().code : null\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptionsSourceConfig()) {\n <ui-form-wrapper\n [fields]=\"optionsSourceFields()\"\n [initialValues]=\"initialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\"\n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptions() && !hasExternalOptionsSource()) {\n <ui-field-options-editor [options]=\"localField().options ?? []\" (optionsChange)=\"updateOptions($event)\"></ui-field-options-editor>\n }\n }\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.advanced' | uicTranslate}} <i (click)=\"toggleSection('advanced')\" class=\"{{hiddenSections().includes('advanced') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('advanced')\">\n <ui-form-wrapper\n [fields]=\"advancedFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.style' | uicTranslate}} <i (click)=\"toggleSection('style')\" class=\"{{hiddenSections().includes('style') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('style')\">\n <ui-form-wrapper\n [fields]=\"styleFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\"> \n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.dependency_title' | uicTranslate}} <i (click)=\"toggleSection('dependency')\" class=\"{{hiddenSections().includes('dependency') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('dependency')\">\n @if (localField().visibilityRules ) {\n <p>{{'form_builder.field_editor.dependency_description' | uicTranslate}}</p>\n <ui-form-wrapper\n [fields]=\"branchFields()\" \n [initialValues]=\"branchInitialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\" \n (formChange)=\"updateRuleValue($event)\">\n </ui-form-wrapper>\n <ui-button color=\"black\" size=\"s\" (click)=\"removeRule()\">{{'form_builder.field_editor.remove_relation' | uicTranslate}}</ui-button>\n }@else {\n <ui-button color=\"black\" size=\"s\" (click)=\"addRule()\">{{'form_builder.field_editor.add_relation' | uicTranslate}}</ui-button>\n }\n</div>\n", styles: [".hidden{display:none}.props-title{font-size:14px;font-weight:600;margin-bottom:8px;background:var(--grey-200);padding:5px;border-radius:5px;display:flex;justify-content:space-between}.props-title i{cursor:pointer}.props-inputs{padding-left:20px;margin-bottom:10px}p{font-size:14px;margin:10px 0;color:var(--yellow-800)}\n"], dependencies: [{ kind: "component", type: UicFormWrapperComponent, selector: "ui-form-wrapper", inputs: ["schema", "fields", "cols", "externalData", "selectOptionsResolver", "loading", "disabled", "showButtons", "fillSelects", "initialValues", "focusFieldName", "focusFieldTrigger", "fileUidResolverFn"], outputs: ["formSubmit", "formChange", "optionsSourceError"] }, { kind: "component", type: UicButtonComponent, selector: "ui-button", inputs: ["text", "icon", "rightIcon", "iconOnly", "disabled", "loading", "size", "type", "color"] }, { kind: "pipe", type: UicTranslatePipe, name: "uicTranslate" }, { kind: "component", type: UicFieldOptionsEditorComponent, selector: "ui-field-options-editor", inputs: ["options"], outputs: ["optionsChange"] }] });
|
|
9223
9420
|
}
|
|
9224
9421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FieldEditorComponent, decorators: [{
|
|
9225
9422
|
type: Component,
|
|
@@ -9228,7 +9425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
9228
9425
|
UicButtonComponent,
|
|
9229
9426
|
UicTranslatePipe,
|
|
9230
9427
|
UicFieldOptionsEditorComponent
|
|
9231
|
-
], template: "<div class=\"props-title\">{{'form_builder.field_editor.basic' | uicTranslate}} <i (click)=\"toggleSection('basic')\" class=\"{{hiddenSections().includes('basic') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('basic')\">\n <ui-form-wrapper\n [fields]=\"requiredFields\" \n [initialValues]=\"initialValues()\"\n [focusFieldName]=\"focusRequiredField() ? 'label' : null\"\n [focusFieldTrigger]=\"focusRequiredField() ? config().code : null\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptionsSourceConfig()) {\n <ui-form-wrapper\n [fields]=\"optionsSourceFields()\"\n [initialValues]=\"initialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\"\n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptions() && !hasExternalOptionsSource()) {\n <ui-field-options-editor [options]=\"localField().options ?? []\" (optionsChange)=\"updateOptions($event)\"></ui-field-options-editor>\n }\n }\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.advanced' | uicTranslate}} <i (click)=\"toggleSection('advanced')\" class=\"{{hiddenSections().includes('advanced') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('advanced')\">\n <ui-form-wrapper\n [fields]=\"advancedFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.style' | uicTranslate}} <i (click)=\"toggleSection('style')\" class=\"{{hiddenSections().includes('style') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('style')\">\n <ui-form-wrapper\n [fields]=\"styleFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\"> \n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.dependency_title' | uicTranslate}} <i (click)=\"toggleSection('dependency')\" class=\"{{hiddenSections().includes('dependency') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('dependency')\">\n @if (localField().visibilityRules ) {\n <p>{{'form_builder.field_editor.dependency_description' | uicTranslate}}</p>\n <ui-form-wrapper\n [fields]=\"branchFields\" \n [initialValues]=\"branchInitialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\" \n (formChange)=\"updateRuleValue($event)\">\n </ui-form-wrapper>\n <ui-button color=\"black\" size=\"s\" (click)=\"removeRule()\">{{'form_builder.field_editor.remove_relation' | uicTranslate}}</ui-button>\n }@else {\n <ui-button color=\"black\" size=\"s\" (click)=\"addRule()\">{{'form_builder.field_editor.add_relation' | uicTranslate}}</ui-button>\n }\n</div>\n", styles: [".hidden{display:none}.props-title{font-size:14px;font-weight:600;margin-bottom:8px;background:var(--grey-200);padding:5px;border-radius:5px;display:flex;justify-content:space-between}.props-title i{cursor:pointer}.props-inputs{padding-left:20px;margin-bottom:10px}p{font-size:14px;margin:10px 0;color:var(--yellow-800)}\n"] }]
|
|
9428
|
+
], template: "<div class=\"props-title\">{{'form_builder.field_editor.basic' | uicTranslate}} <i (click)=\"toggleSection('basic')\" class=\"{{hiddenSections().includes('basic') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('basic')\">\n <ui-form-wrapper\n [fields]=\"requiredFields\" \n [initialValues]=\"initialValues()\"\n [focusFieldName]=\"focusRequiredField() ? 'label' : null\"\n [focusFieldTrigger]=\"focusRequiredField() ? config().code : null\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptionsSourceConfig()) {\n <ui-form-wrapper\n [fields]=\"optionsSourceFields()\"\n [initialValues]=\"initialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\"\n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n @if (hasOptions() && !hasExternalOptionsSource()) {\n <ui-field-options-editor [options]=\"localField().options ?? []\" (optionsChange)=\"updateOptions($event)\"></ui-field-options-editor>\n }\n }\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.advanced' | uicTranslate}} <i (click)=\"toggleSection('advanced')\" class=\"{{hiddenSections().includes('advanced') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('advanced')\">\n <ui-form-wrapper\n [fields]=\"advancedFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\">\n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.style' | uicTranslate}} <i (click)=\"toggleSection('style')\" class=\"{{hiddenSections().includes('style') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('style')\">\n <ui-form-wrapper\n [fields]=\"styleFields()\" \n [initialValues]=\"initialValues()\"\n [cols]=\"1\" \n (formChange)=\"updateFieldValues($event)\"> \n </ui-form-wrapper>\n</div>\n\n<div class=\"props-title\">{{'form_builder.field_editor.dependency_title' | uicTranslate}} <i (click)=\"toggleSection('dependency')\" class=\"{{hiddenSections().includes('dependency') ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'}}\"></i> </div>\n<div class=\"props-inputs\" [class.hidden]=\"hiddenSections().includes('dependency')\">\n @if (localField().visibilityRules ) {\n <p>{{'form_builder.field_editor.dependency_description' | uicTranslate}}</p>\n <ui-form-wrapper\n [fields]=\"branchFields()\" \n [initialValues]=\"branchInitialValues()\"\n [externalData]=\"options()\"\n [cols]=\"1\" \n (formChange)=\"updateRuleValue($event)\">\n </ui-form-wrapper>\n <ui-button color=\"black\" size=\"s\" (click)=\"removeRule()\">{{'form_builder.field_editor.remove_relation' | uicTranslate}}</ui-button>\n }@else {\n <ui-button color=\"black\" size=\"s\" (click)=\"addRule()\">{{'form_builder.field_editor.add_relation' | uicTranslate}}</ui-button>\n }\n</div>\n", styles: [".hidden{display:none}.props-title{font-size:14px;font-weight:600;margin-bottom:8px;background:var(--grey-200);padding:5px;border-radius:5px;display:flex;justify-content:space-between}.props-title i{cursor:pointer}.props-inputs{padding-left:20px;margin-bottom:10px}p{font-size:14px;margin:10px 0;color:var(--yellow-800)}\n"] }]
|
|
9232
9429
|
}], ctorParameters: () => [] });
|
|
9233
9430
|
|
|
9234
9431
|
class FieldTypeSelectorComponent {
|
|
@@ -9258,6 +9455,7 @@ class BlockEditorComponent {
|
|
|
9258
9455
|
deleteBlock = output();
|
|
9259
9456
|
notifySelectedField = output();
|
|
9260
9457
|
selectedFieldId = null;
|
|
9458
|
+
visibilityParentFieldCodes = new Set();
|
|
9261
9459
|
selectField(field) {
|
|
9262
9460
|
this.notifySelectedField.emit(field);
|
|
9263
9461
|
}
|
|
@@ -9270,13 +9468,27 @@ class BlockEditorComponent {
|
|
|
9270
9468
|
addField(newFieldType) {
|
|
9271
9469
|
this.addFieldRequest.emit(newFieldType);
|
|
9272
9470
|
}
|
|
9471
|
+
requestDeleteBlock(e) {
|
|
9472
|
+
e.stopPropagation();
|
|
9473
|
+
if (this.isBlockVisibilityParent())
|
|
9474
|
+
return;
|
|
9475
|
+
this.deleteBlock.emit(this.block().code);
|
|
9476
|
+
}
|
|
9273
9477
|
deleteField(fieldCode, e) {
|
|
9274
9478
|
e.stopPropagation();
|
|
9479
|
+
if (this.isVisibilityParent(fieldCode))
|
|
9480
|
+
return;
|
|
9275
9481
|
this.blockChange.emit({ ...this.block(), fields: this.block().fields.filter(f => f.code !== fieldCode) });
|
|
9276
9482
|
if (this.selectedFieldId === fieldCode) {
|
|
9277
9483
|
this.notifySelectedField.emit(null);
|
|
9278
9484
|
}
|
|
9279
9485
|
}
|
|
9486
|
+
isVisibilityParent(fieldCode) {
|
|
9487
|
+
return this.visibilityParentFieldCodes.has(fieldCode);
|
|
9488
|
+
}
|
|
9489
|
+
isBlockVisibilityParent() {
|
|
9490
|
+
return this.block().fields.some(field => this.isVisibilityParent(field.code));
|
|
9491
|
+
}
|
|
9280
9492
|
reorderFields(event) {
|
|
9281
9493
|
if (event.previousIndex === event.currentIndex)
|
|
9282
9494
|
return;
|
|
@@ -9285,7 +9497,7 @@ class BlockEditorComponent {
|
|
|
9285
9497
|
this.blockChange.emit({ ...this.block(), fields: nextFields });
|
|
9286
9498
|
}
|
|
9287
9499
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BlockEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9288
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: BlockEditorComponent, isStandalone: true, selector: "lib-block-editor", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: false, transformFunction: null }, selectedFieldId: { classPropertyName: "selectedFieldId", publicName: "selectedFieldId", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { blockChange: "blockChange", addFieldRequest: "addFieldRequest", deleteBlock: "deleteBlock", notifySelectedField: "notifySelectedField" }, ngImport: i0, template: "<div class=\"form-block-card\">\n <div class=\"form-block-card-header\">\n <div>\n <input [placeholder]=\"'form_builder.block_title' | uicTranslate\" [ngModel]=\"block().title\" (ngModelChange)=\"changeTitle($event)\">\n <input [placeholder]=\"'form_builder.block_subtitle' | uicTranslate\" [ngModel]=\"block().subtitle\" (ngModelChange)=\"changeSubtitle($event)\">\n </div>\n <ui-button
|
|
9500
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: BlockEditorComponent, isStandalone: true, selector: "lib-block-editor", inputs: { block: { classPropertyName: "block", publicName: "block", isSignal: true, isRequired: false, transformFunction: null }, selectedFieldId: { classPropertyName: "selectedFieldId", publicName: "selectedFieldId", isSignal: false, isRequired: false, transformFunction: null }, visibilityParentFieldCodes: { classPropertyName: "visibilityParentFieldCodes", publicName: "visibilityParentFieldCodes", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { blockChange: "blockChange", addFieldRequest: "addFieldRequest", deleteBlock: "deleteBlock", notifySelectedField: "notifySelectedField" }, ngImport: i0, template: "<div class=\"form-block-card\">\n <div class=\"form-block-card-header\">\n <div>\n <input [placeholder]=\"'form_builder.block_title' | uicTranslate\" [ngModel]=\"block().title\" (ngModelChange)=\"changeTitle($event)\">\n <input [placeholder]=\"'form_builder.block_subtitle' | uicTranslate\" [ngModel]=\"block().subtitle\" (ngModelChange)=\"changeSubtitle($event)\">\n </div>\n <ui-button\n [uiTooltip]=\"(isBlockVisibilityParent() ? 'form_builder.delete_block_dependency_blocked' : 'form_builder.delete_block') | uicTranslate\"\n [disabled]=\"isBlockVisibilityParent()\"\n (click)=\"requestDeleteBlock($event)\"\n size=\"s\"\n icon=\"ri-delete-bin-line\"\n color=\"red\"\n type=\"ghost\"\n [iconOnly]=\"true\">\n </ui-button>\n </div>\n <div\n class=\"form-block-card-body\"\n cdkDropList\n [cdkDropListData]=\"block().fields\"\n (cdkDropListDropped)=\"reorderFields($event)\">\n \n <!-- FIELDS -->\n @for(edtField of block().fields; track edtField.code; let i = $index) {\n <div\n class=\"xfield-card\"\n cdkDrag\n [class.selected-field]=\"selectedFieldId === edtField.code\"\n (click)=\"selectField(edtField)\">\n <i class=\"ri-draggable field-drag-handle\" cdkDragHandle></i>\n\n <div class=\"xfield-card-icon\">\n <i [class]=\"edtField.field?.icon ?? ''\"></i> \n </div>\n <div class=\"xfield-card-body\">\n <b> {{edtField.fieldData.label}} \n @if(edtField.fieldData.visibilityRules) {\n <i class=\"branched-field ri-git-merge-line\"></i> \n <span class=\"vs-rule\"> {{edtField.fieldData.visibilityRules[0]?.fieldLabel ?? edtField.fieldData.visibilityRules[0]?.fieldName ?? '-'}} </span>\n }\n </b>\n <p> {{edtField.field?.label ?? edtField.type ?? edtField.fieldData.type}} </p>\n </div>\n <div class=\"xfield-card-actions\">\n <ui-button\n [uiTooltip]=\"(isVisibilityParent(edtField.code) ? 'form_builder.delete_field_dependency_blocked' : 'form_builder.field_editor.delete') | uicTranslate\"\n [disabled]=\"isVisibilityParent(edtField.code)\"\n (click)=\"deleteField(edtField.code, $event)\"\n size=\"s\"\n icon=\"ri-delete-bin-line\"\n color=\"red\"\n type=\"ghost\"\n [iconOnly]=\"true\">\n </ui-button>\n </div>\n </div>\n\n }\n\n </div>\n <div class=\"new-field\">\n {{'form_builder.add_new_field' | uicTranslate}}\n <lib-field-type-selector (selectType)=\"addField($event)\"></lib-field-type-selector>\n </div>\n</div>\n", styles: [".form-block-card{border:solid 1px var(--blue-500);border-radius:5px;overflow:hidden}.form-block-card-header{display:flex;gap:5px;align-items:center;background-color:#fff;padding:10px;border-bottom:solid 1px var(--grey-300)}.form-block-card-header>div{flex:1 1;gap:4px;display:flex;flex-direction:column}.form-block-card-header>div input{border:solid 1px var(--grey-100);padding:3px 6px;border-radius:5px}.form-block-card-header>div input:focus{border:solid 1px var(--primary-500);outline:none}.form-block-card-body{padding:15px;display:flex;flex-direction:column;background-color:var(--grey-50);gap:10px}.xfield-card{background-color:#fff;border-radius:5px;padding:10px;gap:10px;display:flex;align-items:center;border:solid 2px var(--grey-200);cursor:pointer;transition:border-color .3s ease}.xfield-card:hover{border-color:var(--grey-300)}.xfield-card-icon{display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;font-size:20px;background-color:var(--grey-300);color:var(--grey-600)}.xfield-card-body{flex:1 1}.xfield-card-body b{display:flex;align-items:center;gap:5px}.xfield-card-body p{color:var(--grey-400);font-size:12px}.field-drag-handle{cursor:grab;color:var(--grey-400);transition:color .2s ease}.field-drag-handle:active{cursor:grabbing}.xfield-card:hover .field-drag-handle{color:var(--grey-600)}.cdk-drag-preview{box-sizing:border-box;border-radius:5px;box-shadow:0 6px 12px #0000002e}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.form-block-card-body.cdk-drop-list-dragging .xfield-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.branched-field{color:var(--yellow-600)}.selected-field,.selected-field:hover{border-color:var(--primary-500)}.new-field{border-top:solid 1px var(--grey-300);padding:10px;background-color:#fff;display:flex;flex-direction:column;gap:5px;font-size:14px}.vs-rule{font-size:12px;color:var(--grey-600)}\n"], dependencies: [{ kind: "component", type: UicButtonComponent, selector: "ui-button", inputs: ["text", "icon", "rightIcon", "iconOnly", "disabled", "loading", "size", "type", "color"] }, { kind: "directive", type: UicToolTipDirective, selector: "[uiTooltip]", inputs: ["uiTooltip"] }, { kind: "pipe", type: UicTranslatePipe, name: "uicTranslate" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i1$3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: FormsModule }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FieldTypeSelectorComponent, selector: "lib-field-type-selector", outputs: ["selectType"] }] });
|
|
9289
9501
|
}
|
|
9290
9502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BlockEditorComponent, decorators: [{
|
|
9291
9503
|
type: Component,
|
|
@@ -9296,9 +9508,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
9296
9508
|
DragDropModule,
|
|
9297
9509
|
FormsModule,
|
|
9298
9510
|
FieldTypeSelectorComponent
|
|
9299
|
-
], template: "<div class=\"form-block-card\">\n <div class=\"form-block-card-header\">\n <div>\n <input [placeholder]=\"'form_builder.block_title' | uicTranslate\" [ngModel]=\"block().title\" (ngModelChange)=\"changeTitle($event)\">\n <input [placeholder]=\"'form_builder.block_subtitle' | uicTranslate\" [ngModel]=\"block().subtitle\" (ngModelChange)=\"changeSubtitle($event)\">\n </div>\n <ui-button
|
|
9511
|
+
], template: "<div class=\"form-block-card\">\n <div class=\"form-block-card-header\">\n <div>\n <input [placeholder]=\"'form_builder.block_title' | uicTranslate\" [ngModel]=\"block().title\" (ngModelChange)=\"changeTitle($event)\">\n <input [placeholder]=\"'form_builder.block_subtitle' | uicTranslate\" [ngModel]=\"block().subtitle\" (ngModelChange)=\"changeSubtitle($event)\">\n </div>\n <ui-button\n [uiTooltip]=\"(isBlockVisibilityParent() ? 'form_builder.delete_block_dependency_blocked' : 'form_builder.delete_block') | uicTranslate\"\n [disabled]=\"isBlockVisibilityParent()\"\n (click)=\"requestDeleteBlock($event)\"\n size=\"s\"\n icon=\"ri-delete-bin-line\"\n color=\"red\"\n type=\"ghost\"\n [iconOnly]=\"true\">\n </ui-button>\n </div>\n <div\n class=\"form-block-card-body\"\n cdkDropList\n [cdkDropListData]=\"block().fields\"\n (cdkDropListDropped)=\"reorderFields($event)\">\n \n <!-- FIELDS -->\n @for(edtField of block().fields; track edtField.code; let i = $index) {\n <div\n class=\"xfield-card\"\n cdkDrag\n [class.selected-field]=\"selectedFieldId === edtField.code\"\n (click)=\"selectField(edtField)\">\n <i class=\"ri-draggable field-drag-handle\" cdkDragHandle></i>\n\n <div class=\"xfield-card-icon\">\n <i [class]=\"edtField.field?.icon ?? ''\"></i> \n </div>\n <div class=\"xfield-card-body\">\n <b> {{edtField.fieldData.label}} \n @if(edtField.fieldData.visibilityRules) {\n <i class=\"branched-field ri-git-merge-line\"></i> \n <span class=\"vs-rule\"> {{edtField.fieldData.visibilityRules[0]?.fieldLabel ?? edtField.fieldData.visibilityRules[0]?.fieldName ?? '-'}} </span>\n }\n </b>\n <p> {{edtField.field?.label ?? edtField.type ?? edtField.fieldData.type}} </p>\n </div>\n <div class=\"xfield-card-actions\">\n <ui-button\n [uiTooltip]=\"(isVisibilityParent(edtField.code) ? 'form_builder.delete_field_dependency_blocked' : 'form_builder.field_editor.delete') | uicTranslate\"\n [disabled]=\"isVisibilityParent(edtField.code)\"\n (click)=\"deleteField(edtField.code, $event)\"\n size=\"s\"\n icon=\"ri-delete-bin-line\"\n color=\"red\"\n type=\"ghost\"\n [iconOnly]=\"true\">\n </ui-button>\n </div>\n </div>\n\n }\n\n </div>\n <div class=\"new-field\">\n {{'form_builder.add_new_field' | uicTranslate}}\n <lib-field-type-selector (selectType)=\"addField($event)\"></lib-field-type-selector>\n </div>\n</div>\n", styles: [".form-block-card{border:solid 1px var(--blue-500);border-radius:5px;overflow:hidden}.form-block-card-header{display:flex;gap:5px;align-items:center;background-color:#fff;padding:10px;border-bottom:solid 1px var(--grey-300)}.form-block-card-header>div{flex:1 1;gap:4px;display:flex;flex-direction:column}.form-block-card-header>div input{border:solid 1px var(--grey-100);padding:3px 6px;border-radius:5px}.form-block-card-header>div input:focus{border:solid 1px var(--primary-500);outline:none}.form-block-card-body{padding:15px;display:flex;flex-direction:column;background-color:var(--grey-50);gap:10px}.xfield-card{background-color:#fff;border-radius:5px;padding:10px;gap:10px;display:flex;align-items:center;border:solid 2px var(--grey-200);cursor:pointer;transition:border-color .3s ease}.xfield-card:hover{border-color:var(--grey-300)}.xfield-card-icon{display:flex;justify-content:center;align-items:center;border-radius:5px;width:30px;height:30px;font-size:20px;background-color:var(--grey-300);color:var(--grey-600)}.xfield-card-body{flex:1 1}.xfield-card-body b{display:flex;align-items:center;gap:5px}.xfield-card-body p{color:var(--grey-400);font-size:12px}.field-drag-handle{cursor:grab;color:var(--grey-400);transition:color .2s ease}.field-drag-handle:active{cursor:grabbing}.xfield-card:hover .field-drag-handle{color:var(--grey-600)}.cdk-drag-preview{box-sizing:border-box;border-radius:5px;box-shadow:0 6px 12px #0000002e}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.form-block-card-body.cdk-drop-list-dragging .xfield-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.branched-field{color:var(--yellow-600)}.selected-field,.selected-field:hover{border-color:var(--primary-500)}.new-field{border-top:solid 1px var(--grey-300);padding:10px;background-color:#fff;display:flex;flex-direction:column;gap:5px;font-size:14px}.vs-rule{font-size:12px;color:var(--grey-600)}\n"] }]
|
|
9300
9512
|
}], propDecorators: { selectedFieldId: [{
|
|
9301
9513
|
type: Input
|
|
9514
|
+
}], visibilityParentFieldCodes: [{
|
|
9515
|
+
type: Input
|
|
9302
9516
|
}] } });
|
|
9303
9517
|
|
|
9304
9518
|
class UicUserFormbuilderComponent {
|
|
@@ -9322,6 +9536,11 @@ class UicUserFormbuilderComponent {
|
|
|
9322
9536
|
focusNewFieldCode = signal(null);
|
|
9323
9537
|
propertiesWidth = signal(250);
|
|
9324
9538
|
previewSchema = computed(() => helperShowFormFromBuilder(this.editableBlocks(), this.editableCols()));
|
|
9539
|
+
visibilityParentFieldCodes = computed(() => new Set(this.editableBlocks()
|
|
9540
|
+
.flatMap(block => block.fields)
|
|
9541
|
+
.flatMap(field => field.fieldData.visibilityRules ?? [])
|
|
9542
|
+
.map(rule => rule.fieldName)
|
|
9543
|
+
.filter((fieldName) => !!fieldName)));
|
|
9325
9544
|
isResizingProperties = false;
|
|
9326
9545
|
resizeStartX = 0;
|
|
9327
9546
|
resizeStartWidth = 0;
|
|
@@ -9332,7 +9551,8 @@ class UicUserFormbuilderComponent {
|
|
|
9332
9551
|
.filter(field => field.code !== currentSelected?.code)
|
|
9333
9552
|
.map(field => ({
|
|
9334
9553
|
id: field.code,
|
|
9335
|
-
text: field.fieldData.label || field.fieldData.name
|
|
9554
|
+
text: field.fieldData.label || field.fieldData.name,
|
|
9555
|
+
fieldType: field.fieldData.type
|
|
9336
9556
|
}));
|
|
9337
9557
|
return {
|
|
9338
9558
|
fieldName: fieldOptions,
|
|
@@ -9641,7 +9861,7 @@ class UicUserFormbuilderComponent {
|
|
|
9641
9861
|
return value;
|
|
9642
9862
|
}
|
|
9643
9863
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UicUserFormbuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9644
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UicUserFormbuilderComponent, isStandalone: true, selector: "ui-user-formbuilder", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, formTitle: { classPropertyName: "formTitle", publicName: "formTitle", isSignal: false, isRequired: false, transformFunction: null }, optionSources: { classPropertyName: "optionSources", publicName: "optionSources", isSignal: false, isRequired: false, transformFunction: null }, selectOptionsResolver: { classPropertyName: "selectOptionsResolver", publicName: "selectOptionsResolver", isSignal: false, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, editableFormInput: { classPropertyName: "editableFormInput", publicName: "editableForm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitFormRequest: "submitFormRequest" }, host: { listeners: { "document:mousemove": "onPropertiesResize($event)", "document:mouseup": "stopPropertiesResize()" } }, ngImport: i0, template: "<div class=\"formeditor\" [class.focused]=\"!isReadOnly()\">\r\n <div class=\"formeditor-header\">\r\n <div style=\"flex: 1 1;\">\r\n {{formTitle}} \r\n \r\n <div class=\"cols-selector\"> \r\n @if (isReadOnly()) {\r\n {{editableCols()}}\r\n }@else {\r\n <ui-select [options]=\"[{id: 1, text: '1'}, {id: 2, text: '2'}, {id: 3, text: '3'}, {id: 4, text: '4'}]\" [ngModel]=\"editableCols()\" (ngModelChange)=\"editableCols.set($event)\"></ui-select> \r\n }\r\n col(s)</div>\r\n </div>\r\n @if (isReadOnly()) {\r\n @if (!disabled) {\r\n <ui-button color=\"black\" icon=\"ri-edit-line\" text=\"Editar\" (click)=\"enableEditMode()\"></ui-button>\r\n }\r\n } @else {\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-eye-line\" [text]=\"'form_builder.preview_form' | uicTranslate\" (click)=\"printForm()\"></ui-button>\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-close-line\" text=\"Descartar cambios\" (click)=\"discardChanges()\"></ui-button>\r\n <ui-button color=\"black\" icon=\"ri-check-line\" [text]=\"'form_builder.submit_form' | uicTranslate\" (click)=\"submitForm()\"></ui-button>\r\n }\r\n </div>\r\n @if (!isReadOnly()) {\r\n <div class=\"formeditor-body\">\r\n \r\n <!-- BLOCKS -->\r\n <div class=\"formeditor-overflow\">\r\n <div class=\"formeditor-workarea\">\r\n @for (block of editableBlocks(); track block.code; let i = $index) {\r\n <lib-block-editor \
|
|
9864
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: UicUserFormbuilderComponent, isStandalone: true, selector: "ui-user-formbuilder", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, formTitle: { classPropertyName: "formTitle", publicName: "formTitle", isSignal: false, isRequired: false, transformFunction: null }, optionSources: { classPropertyName: "optionSources", publicName: "optionSources", isSignal: false, isRequired: false, transformFunction: null }, selectOptionsResolver: { classPropertyName: "selectOptionsResolver", publicName: "selectOptionsResolver", isSignal: false, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, editableFormInput: { classPropertyName: "editableFormInput", publicName: "editableForm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitFormRequest: "submitFormRequest" }, host: { listeners: { "document:mousemove": "onPropertiesResize($event)", "document:mouseup": "stopPropertiesResize()" } }, ngImport: i0, template: "<div class=\"formeditor\" [class.focused]=\"!isReadOnly()\">\r\n <div class=\"formeditor-header\">\r\n <div style=\"flex: 1 1;\">\r\n {{formTitle}} \r\n \r\n <div class=\"cols-selector\"> \r\n @if (isReadOnly()) {\r\n {{editableCols()}}\r\n }@else {\r\n <ui-select [options]=\"[{id: 1, text: '1'}, {id: 2, text: '2'}, {id: 3, text: '3'}, {id: 4, text: '4'}]\" [ngModel]=\"editableCols()\" (ngModelChange)=\"editableCols.set($event)\"></ui-select> \r\n }\r\n col(s)</div>\r\n </div>\r\n @if (isReadOnly()) {\r\n @if (!disabled) {\r\n <ui-button color=\"black\" icon=\"ri-edit-line\" text=\"Editar\" (click)=\"enableEditMode()\"></ui-button>\r\n }\r\n } @else {\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-eye-line\" [text]=\"'form_builder.preview_form' | uicTranslate\" (click)=\"printForm()\"></ui-button>\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-close-line\" text=\"Descartar cambios\" (click)=\"discardChanges()\"></ui-button>\r\n <ui-button color=\"black\" icon=\"ri-check-line\" [text]=\"'form_builder.submit_form' | uicTranslate\" (click)=\"submitForm()\"></ui-button>\r\n }\r\n </div>\r\n @if (!isReadOnly()) {\r\n <div class=\"formeditor-body\">\r\n \r\n <!-- BLOCKS -->\r\n <div class=\"formeditor-overflow\">\r\n <div class=\"formeditor-workarea\">\r\n @for (block of editableBlocks(); track block.code; let i = $index) {\r\n <lib-block-editor \n [block]=\"block\"\n [selectedFieldId]=\"selectedField()?.code ?? null\"\n [visibilityParentFieldCodes]=\"visibilityParentFieldCodes()\"\n (blockChange)=\"onBlockChange(i, $event)\"\n (addFieldRequest)=\"addField(block.code, $event)\"\n (notifySelectedField)=\"selectField($event)\"\n (deleteBlock)=\"deleteBlock($event)\">\n </lib-block-editor>\n }\r\n <ui-button type=\"bordered\" icon=\"ri-add-line\" color=\"black\" [text]=\"'form_builder.add_block' | uicTranslate\" (click)=\"addBlock()\"></ui-button>\r\n </div>\r\n </div>\r\n <!-- PROPERTIES -->\r\n <div class=\"formeditor-properties\" [style.width.px]=\"propertiesWidth()\">\n <div\n class=\"formeditor-properties-resize\"\n (mousedown)=\"startPropertiesResize($event)\">\n </div>\n <h3>Propiedades</h3>\n <div class=\"formeditor-properties-form\">\n @if (selectedField() ) {\r\n <lib-field-editor \n [config]=\"selectedField()!\"\n [focusRequiredField]=\"focusNewFieldCode() === selectedField()?.code\"\n [options]=\"dependencyOptions()\"\n (fieldChange)=\"onFieldChange($event)\">\n </lib-field-editor>\n }@else{\r\n <div class=\"no-selected-field\">\r\n <i class=\"ri-edit-box-line\"></i>\r\n <p>{{'form_builder.select_field_to_edit' | uicTranslate}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"form-preview\">\r\n <ui-form-wrapper \n [schema]=\"previewSchema()\"\n [selectOptionsResolver]=\"selectOptionsResolver\"\n [showButtons]=\"false\">\n </ui-form-wrapper>\n </div>\r\n }\r\n </div>\r\n\r\n", styles: [".formeditor{display:flex;flex-direction:column;overflow:hidden;background-color:var(--grey-100);border:solid 1px var(--grey-300);border-radius:5px;max-height:500px}.formeditor-header{background-color:#fff;padding:5px 10px;align-items:center;display:flex;gap:10px;border-bottom:solid 1px var(--grey-300)}.formeditor-body{display:flex;gap:10px;overflow:hidden;padding:10px;min-height:0}.formeditor-overflow{padding:5px;flex:1 1;overflow:auto;min-width:0}.formeditor-workarea{display:flex;flex-direction:column;gap:15px;height:fit-content}.formeditor-properties{width:250px;flex:0 0 auto;display:flex;flex-direction:column;position:relative;background-color:#fff;border:solid 1px var(--grey-300);border-radius:5px;min-height:0;min-width:250px;max-width:600px}.formeditor-properties-resize{position:absolute;top:0;bottom:0;left:-6px;width:10px;cursor:col-resize;z-index:1}.formeditor-properties>h3{padding:10px;border-bottom:solid 1px var(--grey-300)}.formeditor-properties-form{padding:10px;overflow:auto;flex:1 1 auto;min-height:0}.form-preview{padding:20px;overflow:auto;background-color:#fff}.focused{border:solid 1px var(--primary-400);border-radius:10px;box-shadow:0 0 0 3px var(--secondary-alpha)}.no-selected-field{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px 0;font-size:13px;gap:15px;text-align:center;color:var(--grey-400)}.no-selected-field i{font-size:24px}.cols-selector{margin-left:8px;padding-left:8px;border-left:solid 1px var(--grey-400);display:inline-flex;align-items:center;gap:5px}\n"], dependencies: [{ kind: "component", type: UicButtonComponent, selector: "ui-button", inputs: ["text", "icon", "rightIcon", "iconOnly", "disabled", "loading", "size", "type", "color"] }, { kind: "component", type: UicFormWrapperComponent, selector: "ui-form-wrapper", inputs: ["schema", "fields", "cols", "externalData", "selectOptionsResolver", "loading", "disabled", "showButtons", "fillSelects", "initialValues", "focusFieldName", "focusFieldTrigger", "fileUidResolverFn"], outputs: ["formSubmit", "formChange", "optionsSourceError"] }, { kind: "pipe", type: UicTranslatePipe, name: "uicTranslate" }, { kind: "component", type: FieldEditorComponent, selector: "lib-field-editor", inputs: ["config", "focusRequiredField", "options"], outputs: ["fieldChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BlockEditorComponent, selector: "lib-block-editor", inputs: ["block", "selectedFieldId", "visibilityParentFieldCodes"], outputs: ["blockChange", "addFieldRequest", "deleteBlock", "notifySelectedField"] }, { kind: "component", type: UicSelectComponent, selector: "ui-select", inputs: ["icon", "iconColor", "internalIcon", "internalIconColor", "size", "label", "error", "tip", "showSubtitle", "disabled", "nonSelectedText", "noneText", "emptyText", "searcherEnabled", "loading", "nullable", "options"] }] });
|
|
9645
9865
|
}
|
|
9646
9866
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UicUserFormbuilderComponent, decorators: [{
|
|
9647
9867
|
type: Component,
|
|
@@ -9653,7 +9873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
9653
9873
|
FormsModule,
|
|
9654
9874
|
BlockEditorComponent,
|
|
9655
9875
|
UicSelectComponent
|
|
9656
|
-
], template: "<div class=\"formeditor\" [class.focused]=\"!isReadOnly()\">\r\n <div class=\"formeditor-header\">\r\n <div style=\"flex: 1 1;\">\r\n {{formTitle}} \r\n \r\n <div class=\"cols-selector\"> \r\n @if (isReadOnly()) {\r\n {{editableCols()}}\r\n }@else {\r\n <ui-select [options]=\"[{id: 1, text: '1'}, {id: 2, text: '2'}, {id: 3, text: '3'}, {id: 4, text: '4'}]\" [ngModel]=\"editableCols()\" (ngModelChange)=\"editableCols.set($event)\"></ui-select> \r\n }\r\n col(s)</div>\r\n </div>\r\n @if (isReadOnly()) {\r\n @if (!disabled) {\r\n <ui-button color=\"black\" icon=\"ri-edit-line\" text=\"Editar\" (click)=\"enableEditMode()\"></ui-button>\r\n }\r\n } @else {\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-eye-line\" [text]=\"'form_builder.preview_form' | uicTranslate\" (click)=\"printForm()\"></ui-button>\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-close-line\" text=\"Descartar cambios\" (click)=\"discardChanges()\"></ui-button>\r\n <ui-button color=\"black\" icon=\"ri-check-line\" [text]=\"'form_builder.submit_form' | uicTranslate\" (click)=\"submitForm()\"></ui-button>\r\n }\r\n </div>\r\n @if (!isReadOnly()) {\r\n <div class=\"formeditor-body\">\r\n \r\n <!-- BLOCKS -->\r\n <div class=\"formeditor-overflow\">\r\n <div class=\"formeditor-workarea\">\r\n @for (block of editableBlocks(); track block.code; let i = $index) {\r\n <lib-block-editor \
|
|
9876
|
+
], template: "<div class=\"formeditor\" [class.focused]=\"!isReadOnly()\">\r\n <div class=\"formeditor-header\">\r\n <div style=\"flex: 1 1;\">\r\n {{formTitle}} \r\n \r\n <div class=\"cols-selector\"> \r\n @if (isReadOnly()) {\r\n {{editableCols()}}\r\n }@else {\r\n <ui-select [options]=\"[{id: 1, text: '1'}, {id: 2, text: '2'}, {id: 3, text: '3'}, {id: 4, text: '4'}]\" [ngModel]=\"editableCols()\" (ngModelChange)=\"editableCols.set($event)\"></ui-select> \r\n }\r\n col(s)</div>\r\n </div>\r\n @if (isReadOnly()) {\r\n @if (!disabled) {\r\n <ui-button color=\"black\" icon=\"ri-edit-line\" text=\"Editar\" (click)=\"enableEditMode()\"></ui-button>\r\n }\r\n } @else {\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-eye-line\" [text]=\"'form_builder.preview_form' | uicTranslate\" (click)=\"printForm()\"></ui-button>\r\n <ui-button color=\"black\" type=\"bordered\" icon=\"ri-close-line\" text=\"Descartar cambios\" (click)=\"discardChanges()\"></ui-button>\r\n <ui-button color=\"black\" icon=\"ri-check-line\" [text]=\"'form_builder.submit_form' | uicTranslate\" (click)=\"submitForm()\"></ui-button>\r\n }\r\n </div>\r\n @if (!isReadOnly()) {\r\n <div class=\"formeditor-body\">\r\n \r\n <!-- BLOCKS -->\r\n <div class=\"formeditor-overflow\">\r\n <div class=\"formeditor-workarea\">\r\n @for (block of editableBlocks(); track block.code; let i = $index) {\r\n <lib-block-editor \n [block]=\"block\"\n [selectedFieldId]=\"selectedField()?.code ?? null\"\n [visibilityParentFieldCodes]=\"visibilityParentFieldCodes()\"\n (blockChange)=\"onBlockChange(i, $event)\"\n (addFieldRequest)=\"addField(block.code, $event)\"\n (notifySelectedField)=\"selectField($event)\"\n (deleteBlock)=\"deleteBlock($event)\">\n </lib-block-editor>\n }\r\n <ui-button type=\"bordered\" icon=\"ri-add-line\" color=\"black\" [text]=\"'form_builder.add_block' | uicTranslate\" (click)=\"addBlock()\"></ui-button>\r\n </div>\r\n </div>\r\n <!-- PROPERTIES -->\r\n <div class=\"formeditor-properties\" [style.width.px]=\"propertiesWidth()\">\n <div\n class=\"formeditor-properties-resize\"\n (mousedown)=\"startPropertiesResize($event)\">\n </div>\n <h3>Propiedades</h3>\n <div class=\"formeditor-properties-form\">\n @if (selectedField() ) {\r\n <lib-field-editor \n [config]=\"selectedField()!\"\n [focusRequiredField]=\"focusNewFieldCode() === selectedField()?.code\"\n [options]=\"dependencyOptions()\"\n (fieldChange)=\"onFieldChange($event)\">\n </lib-field-editor>\n }@else{\r\n <div class=\"no-selected-field\">\r\n <i class=\"ri-edit-box-line\"></i>\r\n <p>{{'form_builder.select_field_to_edit' | uicTranslate}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"form-preview\">\r\n <ui-form-wrapper \n [schema]=\"previewSchema()\"\n [selectOptionsResolver]=\"selectOptionsResolver\"\n [showButtons]=\"false\">\n </ui-form-wrapper>\n </div>\r\n }\r\n </div>\r\n\r\n", styles: [".formeditor{display:flex;flex-direction:column;overflow:hidden;background-color:var(--grey-100);border:solid 1px var(--grey-300);border-radius:5px;max-height:500px}.formeditor-header{background-color:#fff;padding:5px 10px;align-items:center;display:flex;gap:10px;border-bottom:solid 1px var(--grey-300)}.formeditor-body{display:flex;gap:10px;overflow:hidden;padding:10px;min-height:0}.formeditor-overflow{padding:5px;flex:1 1;overflow:auto;min-width:0}.formeditor-workarea{display:flex;flex-direction:column;gap:15px;height:fit-content}.formeditor-properties{width:250px;flex:0 0 auto;display:flex;flex-direction:column;position:relative;background-color:#fff;border:solid 1px var(--grey-300);border-radius:5px;min-height:0;min-width:250px;max-width:600px}.formeditor-properties-resize{position:absolute;top:0;bottom:0;left:-6px;width:10px;cursor:col-resize;z-index:1}.formeditor-properties>h3{padding:10px;border-bottom:solid 1px var(--grey-300)}.formeditor-properties-form{padding:10px;overflow:auto;flex:1 1 auto;min-height:0}.form-preview{padding:20px;overflow:auto;background-color:#fff}.focused{border:solid 1px var(--primary-400);border-radius:10px;box-shadow:0 0 0 3px var(--secondary-alpha)}.no-selected-field{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px 0;font-size:13px;gap:15px;text-align:center;color:var(--grey-400)}.no-selected-field i{font-size:24px}.cols-selector{margin-left:8px;padding-left:8px;border-left:solid 1px var(--grey-400);display:inline-flex;align-items:center;gap:5px}\n"] }]
|
|
9657
9877
|
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
9658
9878
|
type: Input
|
|
9659
9879
|
}], formTitle: [{
|
|
@@ -10471,5 +10691,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
10471
10691
|
* Generated bundle index. Do not edit.
|
|
10472
10692
|
*/
|
|
10473
10693
|
|
|
10474
|
-
export { BASE_FORM_FIELDS, BRANCH_FORM_FIELDS, DROPDOWN_OVERLAY_CONTROLS, EXTRA_FORM_FIELDS, FIELDS_CONFIG, FirstCapitalPipe, LAYOUT_FORM_FIELDS, MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA, UIC_TRANSLATE_CONFIG, UiDropdownCloseDirective, UiModalRef, UicAccordionComponent, UicActionButtonComponent, UicAlertContainerComponent, UicButtonComponent, UicCheckboxComponent, UicDatePickerComponent, UicDropdownContainerComponent, UicEditableTableComponent, UicExcelTableComponent, UicFileInputComponent, UicFormWrapperComponent, UicInputComponent, UicKpiCardComponent, UicModalService, UicMultySearcherComponent, UicMultySelectComponent, UicNameInitsPipe, UicOverlayCardComponent, UicPhoneInputComponent, UicPoolOptionsComponent, UicPortletCardComponent, UicProgressBarComponent, UicPushAlertService, UicRadioComponent, UicRuleBuilderComponent, UicSearcherComponent, UicSelectComponent, UicShortTableComponent, UicSignaturePadComponent, UicSkeletonCardsComponent, UicSkeletonLoaderComponent, UicSliderComponent, UicStepTabsComponent, UicStepsFormComponent, UicSwichComponent, UicTableComponent, UicTabsButtonComponent, UicTagSelectorComponent, UicTextareaAutoresizeDirective, UicTextareaAutoresizeMaxRowsDirective, UicTextareaAutoresizeMinRowsDirective, UicTimePickerComponent, UicTinyAlertService, UicToolTipDirective, UicTranslatePipe, UicTranslateService, UicTreeAdminComponent, UicUserFormbuilderComponent, UicWorkPanelComponent, animatedRow, fadeAndRise, fadeBackdrop, helperFormMapFormdataToObject, helperShowFormFromBuilder, helperTableMapDatoToColums, highlightRow, isMobile, provideUicTranslateConfig, pushTop, sideModal, simpleFade };
|
|
10694
|
+
export { BASE_FORM_FIELDS, BRANCH_FORM_FIELDS, DROPDOWN_OVERLAY_CONTROLS, EXTRA_FORM_FIELDS, FIELDS_CONFIG, FirstCapitalPipe, LAYOUT_FORM_FIELDS, MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA, UIC_TRANSLATE_CONFIG, UiDropdownCloseDirective, UiModalRef, UicAccordionComponent, UicActionButtonComponent, UicAlertContainerComponent, UicButtonComponent, UicCheckboxComponent, UicDatePickerComponent, UicDropdownContainerComponent, UicEditableTableComponent, UicExcelTableComponent, UicFileInputComponent, UicFormWrapperComponent, UicInputComponent, UicKpiCardComponent, UicModalService, UicMultySearcherComponent, UicMultySelectComponent, UicNameInitsPipe, UicOverlayCardComponent, UicPhoneInputComponent, UicPoolOptionsComponent, UicPortletCardComponent, UicProgressBarComponent, UicPushAlertService, UicRadioComponent, UicRuleBuilderComponent, UicSearcherComponent, UicSelectComponent, UicShortTableComponent, UicSignaturePadComponent, UicSkeletonCardsComponent, UicSkeletonLoaderComponent, UicSliderComponent, UicStepTabsComponent, UicStepsFormComponent, UicSwichComponent, UicTableComponent, UicTabsButtonComponent, UicTagSelectorComponent, UicTextareaAutoresizeDirective, UicTextareaAutoresizeMaxRowsDirective, UicTextareaAutoresizeMinRowsDirective, UicTimePickerComponent, UicTinyAlertService, UicToolTipDirective, UicTranslatePipe, UicTranslateService, UicTreeAdminComponent, UicUserFormbuilderComponent, UicWorkPanelComponent, VISIBILITY_OPERATOR_OPTIONS, animatedRow, fadeAndRise, fadeBackdrop, helperFormMapFormdataToObject, helperShowFormFromBuilder, helperTableMapDatoToColums, highlightRow, isMobile, provideUicTranslateConfig, pushTop, sideModal, simpleFade };
|
|
10475
10695
|
//# sourceMappingURL=ui-core-abv.mjs.map
|