thingsboard-memoizeit

Details

diff --git a/ui/src/app/components/contact.directive.js b/ui/src/app/components/contact.directive.js
index f207d7d..c32d50a 100644
--- a/ui/src/app/components/contact.directive.js
+++ b/ui/src/app/components/contact.directive.js
@@ -277,10 +277,33 @@ function Contact($compile, $templateCache) {
         "Zimbabwe"
     ];
 
+    var postalCodePatterns = {
+        "United States": "(\\d{5}([\\-]\\d{4})?)",
+        "Australia": "[0-9]{4}",
+        "Austria": "[0-9]{4}",
+        "Belgium": "[0-9]{4}",
+        "Brazil": "[0-9]{5}[\\-]?[0-9]{3}",
+        "Canada": "[A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9]",
+        "Denmark": "[0-9]{3,4}",
+        "Faroe Islands": "[0-9]{3,4}",
+        "Netherlands": "[1-9][0-9]{3}\\s?[a-zA-Z]{2}",
+        "Germany": "[0-9]{5}",
+        "Hungary": "[0-9]{4}",
+        "Italy": "[0-9]{5}",
+        "Japan": "\\d{3}-\\d{4}",
+        "Luxembourg": "(L\\s*(-|—|–))\\s*?[\\d]{4}",
+        "Poland": "[0-9]{2}\\-[0-9]{3}",
+        "Spain": "((0[1-9]|5[0-2])|[1-4][0-9])[0-9]{3}",
+        "Sweden": "\\d{3}\\s?\\d{2}",
+        "United Kingdom": "[A-Za-z]{1,2}[0-9Rr][0-9A-Za-z]? [0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}"
+    };
+
     var linker = function (scope, element) {
 
         scope.countries = countries;
 
+        scope.postalCodePatterns = postalCodePatterns;
+
         var template = $templateCache.get(contactTemplate);
 
         element.html(template);
diff --git a/ui/src/app/components/contact.tpl.html b/ui/src/app/components/contact.tpl.html
index d107265..2c52fd3 100644
--- a/ui/src/app/components/contact.tpl.html
+++ b/ui/src/app/components/contact.tpl.html
@@ -34,11 +34,11 @@
 	</md-input-container>					
 	<md-input-container class="md-block">
 		<label translate>contact.postal-code</label>
-		<input name="zip" ng-model="contact.zip" ng-pattern="/^([0-9]*)$/">	
+		<input name="zip" ng-model="contact.zip" ng-pattern="postalCodePatterns[contact.country]">
 	    <div ng-messages="theForm.zip.$error" role="alert" multiple>
 	      <div translate ng-message="pattern">contact.postal-code-invalid</div>
 	    </div>	
-	</md-input-container>	
+	</md-input-container>
 </div>				
 <md-input-container class="md-block">
 	<label translate>contact.address</label>
diff --git a/ui/src/app/locale/locale.constant.js b/ui/src/app/locale/locale.constant.js
index 7345894..bd1b9e9 100644
--- a/ui/src/app/locale/locale.constant.js
+++ b/ui/src/app/locale/locale.constant.js
@@ -294,9 +294,9 @@ export default angular.module('thingsboard.locale', [])
                 "contact": {
                     "country": "Country",
                     "city": "City",
-                    "state": "State",
-                    "postal-code": "Postal code",
-                    "postal-code-invalid": "Only digits are allowed.",
+                    "state": "State / Province",
+                    "postal-code": "Zip / Postal Code",
+                    "postal-code-invalid": "Invalid Zip / Postal Code format.",
                     "address": "Address",
                     "address2": "Address 2",
                     "phone": "Phone",