diff --git a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js index 91ac7a8b01..db977326eb 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/RepeatableComponent/index.js @@ -52,6 +52,7 @@ const RepeatableComponent = ({ const errorsArray = componentErrorKeys.map(key => get(formErrors, [key, 'id'], '') ); + const hasMinError = get(errorsArray, [0], '').includes('min') && !collapses.some(obj => obj.isOpen === true); diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js index 3bedd4e06a..61a0439393 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/index.js @@ -266,7 +266,7 @@ const EditViewDataManagerProvider = ({ }); redirectToPreviousPage(); } catch (err) { - console.log({ err }); + console.error({ err }); const error = get( err, ['response', 'payload', 'message', '0', 'messages', '0', 'id'], @@ -281,6 +281,7 @@ const EditViewDataManagerProvider = ({ } } catch (err) { const errors = getYupInnerErrors(err); + console.error({ err, errors }); dispatch({ type: 'SUBMIT_ERRORS', diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js index 4f9988d836..270dca5974 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditViewDataManagerProvider/utils/schema.js @@ -109,7 +109,26 @@ const createYupSchema = (model, { components }) => { .nullable(); if (min) { - componentSchema = componentSchema.min(min, errorsTrads.min); + componentSchema = yup.lazy(array => { + if (attribute.required) { + return yup + .array() + .of(componentFieldSchema) + .defined() + .min(min, errorsTrads.min); + } + + let schema = yup + .array() + .of(componentFieldSchema) + .nullable(); + + if (array && !isEmpty(array)) { + schema = schema.min(min, errorsTrads.min); + } + + return schema; + }); } if (max) {