Fixed bug in xosForm
diff --git a/views/ngXosLib/xosHelpers/spec/services/helpers/form.helpers.test.js b/views/ngXosLib/xosHelpers/spec/services/helpers/form.helpers.test.js
index 21e2649..3c2405d 100644
--- a/views/ngXosLib/xosHelpers/spec/services/helpers/form.helpers.test.js
+++ b/views/ngXosLib/xosHelpers/spec/services/helpers/form.helpers.test.js
@@ -17,8 +17,7 @@
'name',
'mail',
'active',
- 'created',
- 'custom'
+ 'created'
];
let modelField = {
@@ -26,8 +25,7 @@
name: {},
mail: {},
active: {},
- created: {},
- custom: {}
+ created: {}
};
let model = {
@@ -40,6 +38,14 @@
};
let customField = {
+ id: {
+ label: 'Id',
+ type: 'number',
+ validators: {
+ required: true
+ },
+ hint: ''
+ },
custom: {
label: 'Custom Label',
type: 'number',
@@ -52,7 +58,9 @@
id: {
label: 'Id:',
type: 'number',
- validators: {},
+ validators: {
+ required: true
+ },
hint: ''
},
name: {
@@ -152,7 +160,35 @@
describe('when modelField are provided', () => {
it('should combine modelField and customField in a form object', () => {
- expect(service.buildFormStructure(modelField, customField, model)).toEqual(formObject);
+ const form = service.buildFormStructure(modelField, customField, model);
+ expect(form).toEqual(formObject);
+ });
+
+ it('should override modelField properties whith customField properties', () => {
+ const customFieldOverride = {
+ id: {
+ hint: 'something',
+ type: 'select',
+ options: [
+ {id: 1, label: 'one'},
+ {id: 2, label: 'two'}
+ ],
+ validators: {
+ required: true
+ }
+ }
+ };
+ const form = service.buildFormStructure({id: {}}, customFieldOverride, model);
+
+ expect(form).toEqual({
+ id: {
+ label: 'Id:',
+ validators: {required: true},
+ hint: customFieldOverride.id.hint,
+ type: customFieldOverride.id.type,
+ options: customFieldOverride.id.options
+ }
+ });
});
});
diff --git a/views/ngXosLib/xosHelpers/src/services/helpers/ui/form.helpers.js b/views/ngXosLib/xosHelpers/src/services/helpers/ui/form.helpers.js
index 2dabfe1..88cff60 100644
--- a/views/ngXosLib/xosHelpers/src/services/helpers/ui/form.helpers.js
+++ b/views/ngXosLib/xosHelpers/src/services/helpers/ui/form.helpers.js
@@ -91,7 +91,8 @@
this.buildFormStructure = (modelField, customField, model) => {
- modelField = Object.keys(modelField).length > 0 ? modelField : customField; //if no model field are provided, check custom
+ // modelField = Object.keys(modelField).length > 0 ? modelField : customField; //if no model field are provided, check custom
+ modelField = angular.extend(modelField, customField);
customField = customField || {};
return _.reduce(Object.keys(modelField), (form, f) => {
diff --git a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form/form.component.js b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form/form.component.js
index 2a9f00c..9d68d56 100644
--- a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form/form.component.js
+++ b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form/form.component.js
@@ -208,7 +208,9 @@
let diff = _.difference(Object.keys(model), this.excludedField);
let modelField = XosFormHelpers.parseModelField(diff);
+ console.log(modelField, this.config.fields, model);
this.formField = XosFormHelpers.buildFormStructure(modelField, this.config.fields, model);
+ console.log(this.formField);
});
}
diff --git a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/validation/validation.component.js b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/validation/validation.component.js
index 37cfbd5..91610e1 100644
--- a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/validation/validation.component.js
+++ b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/validation/validation.component.js
@@ -82,9 +82,6 @@
},
template: `
<div ng-cloak>
- <pre>{{vm.field | json}}</pre>
- <!--<pre>{{vm.form.$submitted | json}}</pre>-->
- <!--<pre>{{vm.field.$error.required !== false}}</pre>-->
<xos-alert config="vm.config" show="vm.field.$error.required !== undefined && vm.field.$error.required !== false && (vm.field.$touched || vm.form.$submitted)">
Field required
</xos-alert>