diff --git a/views/ngXosLib/bower.json b/views/ngXosLib/bower.json
index 18ee79e..55adc5c 100644
--- a/views/ngXosLib/bower.json
+++ b/views/ngXosLib/bower.json
@@ -23,6 +23,7 @@
     "lodash": "~4.11.1"
   },
   "devDependencies": {
-    "angular-mocks": "1.4.7"
+    "angular-mocks": "1.4.7",
+    "jasmine-jquery": "~2.1.1"
   }
 }
diff --git a/views/ngXosLib/xosHelpers/spec/ui/form.test.js b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
index 4b33a5a..5d2b833 100644
--- a/views/ngXosLib/xosHelpers/spec/ui/form.test.js
+++ b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
@@ -15,6 +15,7 @@
       let fields = [
         'id',
         'name',
+        'mail',
         'active',
         'created',
         'custom'
@@ -23,6 +24,7 @@
       let modelField = {
         id: {},
         name: {},
+        mail: {},
         active: {},
         created: {},
         custom: {}
@@ -31,6 +33,7 @@
       let model = {
         id: 1,
         name: 'test',
+        mail: 'test@onlab.us',
         active: true,
         created: '2016-04-18T23:44:16.883181Z',
         custom: 'MyCustomValue'
@@ -55,6 +58,11 @@
           type: 'string',
           validators: {}
         },
+        mail: {
+          label: 'Mail:',
+          type: 'email',
+          validators: {}
+        },
         active: {
           label: 'Active:',
           type: 'boolean',
@@ -81,10 +89,23 @@
         service = _XosFormHelpers_;
       }));
 
+      describe('the _isEmail method', () => {
+        it('should return true', () => {
+          expect(service._isEmail('test@onlab.us')).toEqual(true);
+        });
+        it('should return false', () => {
+          expect(service._isEmail('testonlab.us')).toEqual(false);
+          expect(service._isEmail('test@onlab')).toEqual(false);
+        });
+      });
+
       describe('the _getFieldFormat method', () => {
         it('should return string', () => {
           expect(service._getFieldFormat('string')).toEqual('string');
         });
+        it('should return mail', () => {
+          expect(service._getFieldFormat('test@onlab.us')).toEqual('email');
+        });
         it('should return number', () => {
           expect(service._getFieldFormat(1)).toEqual('number');
           expect(service._getFieldFormat('1')).toEqual('number');
@@ -204,8 +225,13 @@
           let label = angular.element(nameField.getElementsByTagName('label')[0]).text()
           expect(label).toEqual('Custom Label:');
         });
-      });
 
+        it('should use the correct input type', () => {
+          expect($(element).find('[name="age"]')).toHaveAttr('type', 'number');
+          expect($(element).find('[name="birthDate"]')).toHaveAttr('type', 'date');
+          expect($(element).find('[name="enabled"]')).toHaveAttr('type', 'boolean');
+        });
+      });
     });
   });
 })();
diff --git a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
index cd5e1ca..4f22f99 100644
--- a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
+++ b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
@@ -62,9 +62,9 @@
       },
       template: `
         <ng-form name="vm.config.formName || 'form'">
-          <div class="form-group" ng-repeat="field in vm.formField">
+          <div class="form-group" ng-repeat="(name, field) in vm.formField">
             <label>{{field.label}}</label>
-            <input type="text" name="" class="form-control" ng-model="vm.ngModel[field]"/>
+            <input type="{{field.type}}" name="{{name}}" class="form-control" ng-model="vm.ngModel[name]"/>
           </div>
           <div class="form-group" ng-if="vm.config.actions">
             <button href=""
@@ -109,6 +109,11 @@
   })
   .service('XosFormHelpers', function(_, LabelFormatter){
 
+    this._isEmail = (text) => {
+      var re = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
+      return re.test(text);
+    };
+
     this._getFieldFormat = (value) => {
 
       // check if is date
@@ -127,6 +132,11 @@
         return 'number';
       }
 
+      // check if a string is an email
+      if(this._isEmail(value)){
+        return 'email';
+      }
+
       return typeof value;
     };
 
@@ -137,6 +147,11 @@
           type: (customField[f] && customField[f].type) ? customField[f].type : this._getFieldFormat(model[f]),
           validators: {}
         };
+
+        if(form[f].type === 'date'){
+          model[f] = new Date(model[f]);
+        }
+
         return form;
       }, {});
     };
