aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/helpers/validation-helpers.js35
-rw-r--r--src/i18n/locales/en-US.json6
2 files changed, 35 insertions, 6 deletions
diff --git a/src/helpers/validation-helpers.js b/src/helpers/validation-helpers.js
index a8a242d54..2f762437d 100644
--- a/src/helpers/validation-helpers.js
+++ b/src/helpers/validation-helpers.js
@@ -1,6 +1,31 @@
1import { defineMessages } from 'react-intl';
2
3const messages = defineMessages({
4 required: {
5 id: 'validation.required',
6 defaultMessage: '!!!Field is required',
7 },
8 email: {
9 id: 'validation.email',
10 defaultMessage: '!!!Email not valid',
11 },
12 url: {
13 id: 'validation.url',
14 defaultMessage: '!!!Not a valid URL',
15 },
16 minLength: {
17 id: 'validation.minLength',
18 defaultMessage: '!!!Too few characters',
19 },
20 oneRequired: {
21 id: 'validation.oneRequired',
22 defaultMessage: '!!!At least one is required',
23 },
24});
25
1export function required({ field }) { 26export function required({ field }) {
2 const isValid = (field.value.trim() !== ''); 27 const isValid = (field.value.trim() !== '');
3 return [isValid, `${field.label} is required`]; 28 return [isValid, window.franz.intl.formatMessage(messages.required, { field: field.label })];
4} 29}
5 30
6export function email({ field }) { 31export function email({ field }) {
@@ -13,7 +38,7 @@ export function email({ field }) {
13 isValid = true; 38 isValid = true;
14 } 39 }
15 40
16 return [isValid, `${field.label} not valid`]; 41 return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })];
17} 42}
18 43
19export function url({ field }) { 44export function url({ field }) {
@@ -27,7 +52,7 @@ export function url({ field }) {
27 isValid = true; 52 isValid = true;
28 } 53 }
29 54
30 return [isValid, `${field.label} is not a valid url`]; 55 return [isValid, window.franz.intl.formatMessage(messages.url, { field: field.label })];
31} 56}
32 57
33export function minLength(length) { 58export function minLength(length) {
@@ -36,13 +61,13 @@ export function minLength(length) {
36 if (field.touched) { 61 if (field.touched) {
37 isValid = field.value.length >= length; 62 isValid = field.value.length >= length;
38 } 63 }
39 return [isValid, `${field.label} should be at least ${length} characters long.`]; 64 return [isValid, window.franz.intl.formatMessage(messages.minLength, { field: field.label, length })];
40 }; 65 };
41} 66}
42 67
43export function oneRequired(targets) { 68export function oneRequired(targets) {
44 return ({ field, form }) => { 69 return ({ field, form }) => {
45 const invalidFields = targets.filter(target => form.$(target).value === ''); 70 const invalidFields = targets.filter(target => form.$(target).value === '');
46 return [targets.length !== invalidFields.length, `${field.label} is required`]; 71 return [targets.length !== invalidFields.length, window.franz.intl.formatMessage(messages.required, { field: field.label })];
47 }; 72 };
48} 73}
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 25ca2adeb..cd0258d8a 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -200,5 +200,9 @@
200 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", 200 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
201 "service.disabledHandler.headline": "{name} is disabled", 201 "service.disabledHandler.headline": "{name} is disabled",
202 "service.disabledHandler.action": "Enable {name}", 202 "service.disabledHandler.action": "Enable {name}",
203 "menu.edit": "Edit" 203 "menu.edit": "Edit",
204 "validation.required": "{field} is required",
205 "validation.email": "{field} is not valid",
206 "validation.url": "{field} is not a valid URL",
207 "validation.minLength": "{field} should be at least {length} characters long"
204} 208}