Add field type url

This commit is contained in:
Nicolas Meienberger 2022-05-23 20:46:26 +00:00
parent 449630bf5f
commit e30a5a4c28
3 changed files with 55 additions and 16 deletions

View file

@ -5,7 +5,8 @@ services:
image: ghcr.io/linuxserver/prowlarr:develop image: ghcr.io/linuxserver/prowlarr:develop
environment: environment:
- TZ=${TZ} # Can use any env variable. List in runtipi/templates/env-sample - TZ=${TZ} # Can use any env variable. List in runtipi/templates/env-sample
- DNS_IP=${DNS_IP} dns:
- ${DNS_IP}
volumes: volumes:
- ${APP_DATA_DIR}/data/config:/config #Always start the path with ${APP_DATA_DIR}. This will put all data inside app-data/my-app/data - ${APP_DATA_DIR}/data/config:/config #Always start the path with ${APP_DATA_DIR}. This will put all data inside app-data/my-app/data
ports: ports:

View file

@ -6,21 +6,58 @@ export const validateAppConfig = (values: Record<string, string>, fields: (AppCo
fields.forEach((field) => { fields.forEach((field) => {
if (field.required && !values[field.id]) { if (field.required && !values[field.id]) {
errors[field.id] = 'Field required'; errors[field.id] = `${field.label} is required`;
} else if (values[field.id] && field.min && values[field.id].length < field.min) { }
errors[field.id] = `Field must be at least ${field.min} characters long`;
} else if (values[field.id] && field.max && values[field.id].length > field.max) { if (values[field.id]) {
errors[field.id] = `Field must be at most ${field.max} characters long`; switch (field.type) {
} else if (values[field.id] && field.type === FieldTypes.number && !validator.isNumeric(values[field.id])) { case FieldTypes.text:
errors[field.id] = 'Field must be a number'; if (field.max && values[field.id].length > field.max) {
} else if (values[field.id] && field.type === FieldTypes.email && !validator.isEmail(values[field.id])) { errors[field.id] = `${field.label} must be less than ${field.max} characters`;
errors[field.id] = 'Field must be a valid email'; }
} else if (values[field.id] && field.type === FieldTypes.fqdn && !validator.isFQDN(values[field.id] || '')) {
errors[field.id] = 'Field must be a valid domain'; if (field.min && values[field.id].length < field.min) {
} else if (values[field.id] && field.type === FieldTypes.ip && !validator.isIP(values[field.id])) { errors[field.id] = `${field.label} must be at least ${field.min} characters`;
errors[field.id] = 'Field must be a valid IP address'; }
} else if (values[field.id] && field.type === FieldTypes.fqdnip && !validator.isFQDN(values[field.id] || '') && !validator.isIP(values[field.id])) { break;
errors[field.id] = 'Field must be a valid domain or IP address'; case FieldTypes.password:
if (!validator.isLength(values[field.id], { min: field.min, max: field.max })) {
errors[field.id] = `${field.label} must be between ${field.min} and ${field.max} characters`;
}
break;
case FieldTypes.email:
if (!validator.isEmail(values[field.id])) {
errors[field.id] = `${field.label} must be a valid email address`;
}
break;
case FieldTypes.number:
if (!validator.isNumeric(values[field.id])) {
errors[field.id] = `${field.label} must be a number`;
}
break;
case FieldTypes.fqdn:
if (!validator.isFQDN(values[field.id])) {
errors[field.id] = `${field.label} must be a valid domain`;
}
break;
case FieldTypes.ip:
if (!validator.isIP(values[field.id])) {
errors[field.id] = `${field.label} must be a valid IP address`;
}
break;
case FieldTypes.fqdnip:
if (!validator.isFQDN(values[field.id] || '') && !validator.isIP(values[field.id])) {
errors[field.id] = `${field.label} must be a valid domain or IP address`;
}
break;
case FieldTypes.url:
if (!validator.isURL(values[field.id])) {
errors[field.id] = `${field.label} must be a valid URL`;
}
break;
default:
break;
}
} }
}); });

View file

@ -6,6 +6,7 @@ export enum FieldTypes {
fqdn = 'fqdn', fqdn = 'fqdn',
ip = 'ip', ip = 'ip',
fqdnip = 'fqdnip', fqdnip = 'fqdnip',
url = 'url',
} }
interface FormField { interface FormField {