Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2020-04-16 12:00:26 +02:00
parent 873f810099
commit 8ddf955af2
3 changed files with 28 additions and 0 deletions

View File

@ -503,6 +503,8 @@ const forms = {
]; ];
items = uidItems; items = uidItems;
} else if (type === 'json') {
items.splice(0, 1);
} }
if (!ATTRIBUTES_THAT_DONT_HAVE_MIN_MAX_SETTINGS.includes(type)) { if (!ATTRIBUTES_THAT_DONT_HAVE_MIN_MAX_SETTINGS.includes(type)) {

View File

@ -1,6 +1,7 @@
'use strict'; 'use strict';
const yup = require('yup'); const yup = require('yup');
const _ = require('lodash');
const validators = { const validators = {
required: yup.boolean(), required: yup.boolean(),
@ -80,11 +81,34 @@ const isValidRegExpPattern = {
test: val => val === '' || new RegExp(val), test: val => val === '' || new RegExp(val),
}; };
const isValidDefaultJSON = {
name: 'isValidDefaultJSON',
message: '${path} is not a valid JSON',
test: val => {
if (val === undefined) {
return true;
}
if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || _.isArray(val)) {
return true;
}
try {
JSON.parse(val);
return true;
} catch (err) {
return false;
}
},
};
module.exports = { module.exports = {
validators, validators,
areEnumValuesUnique, areEnumValuesUnique,
isValidCollectionName, isValidCollectionName,
isValidCategoryName, isValidCategoryName,
isValidDefaultJSON,
isValidName, isValidName,
isValidIcon, isValidIcon,
isValidKey, isValidKey,

View File

@ -6,6 +6,7 @@ const yup = require('yup');
const { const {
validators, validators,
areEnumValuesUnique, areEnumValuesUnique,
isValidDefaultJSON,
isValidName, isValidName,
isValidEnum, isValidEnum,
isValidUID, isValidUID,
@ -112,6 +113,7 @@ const getTypeShape = (attribute, { modelType, attributes } = {}) => {
} }
case 'json': { case 'json': {
return { return {
default: yup.mixed().test(isValidDefaultJSON),
required: validators.required, required: validators.required,
unique: validators.unique, unique: validators.unique,
}; };