diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js
index 08c943f80c..1cc09dd335 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/index.js
@@ -24,8 +24,6 @@ import Wrapper from './Wrapper';
/* eslint-disable react/no-array-index-key */
const DynamicZone = ({
- max,
- min,
name,
// Passed with the select function
@@ -34,16 +32,20 @@ const DynamicZone = ({
isCreatingEntry,
isFieldAllowed,
isFieldReadable,
- layout,
moveComponentUp,
moveComponentDown,
removeComponentFromDynamicZone,
dynamicDisplayedComponents,
+
+ fieldSchema,
+ metadatas,
}) => {
const [isOpen, setIsOpen] = useState(false);
-
const { components } = useEditView();
+ // We cannot use the default props here
+ const { max = Infinity, min = -Infinity } = fieldSchema;
+
const getDynamicComponentSchemaData = useCallback(
componentUid => {
const component = components.find(compo => compo.uid === componentUid);
@@ -73,12 +75,8 @@ const DynamicZone = ({
.map(key => formErrors[key]);
}, [formErrors, name]);
- const dynamicZoneAvailableComponents = useMemo(
- () => get(layout, ['schema', 'attributes', name, 'components'], []),
- [layout, name]
- );
+ const dynamicZoneAvailableComponents = useMemo(() => fieldSchema.components || [], [fieldSchema]);
- const metas = useMemo(() => get(layout, ['metadatas', name, 'edit'], {}), [layout, name]);
const dynamicDisplayedComponentsLength = dynamicDisplayedComponents.length;
const missingComponentNumber = min - dynamicDisplayedComponentsLength;
const hasError = dynamicZoneErrors.length > 0;
@@ -89,18 +87,20 @@ const DynamicZone = ({
const hasMaxError =
hasError && get(dynamicZoneErrors, [0, 'id'], '') === 'components.Input.error.validation.max';
+ // TODO
if (!isFieldAllowed && isCreatingEntry) {
return (
-
+
);
}
+ // TODO
if (!isFieldAllowed && !isFieldReadable && !isCreatingEntry) {
return (
-
+
);
}
@@ -109,8 +109,8 @@ const DynamicZone = ({
{dynamicDisplayedComponentsLength > 0 && (
)}
@@ -198,7 +198,7 @@ const DynamicZone = ({
@@ -237,22 +237,33 @@ const DynamicZone = ({
DynamicZone.defaultProps = {
dynamicDisplayedComponents: [],
- max: Infinity,
- min: -Infinity,
+ fieldSchema: {
+ max: Infinity,
+ min: -Infinity,
+ },
};
DynamicZone.propTypes = {
addComponentToDynamicZone: PropTypes.func.isRequired,
dynamicDisplayedComponents: PropTypes.array,
+ fieldSchema: PropTypes.shape({
+ components: PropTypes.array.isRequired,
+ max: PropTypes.number,
+ min: PropTypes.number,
+ }),
formErrors: PropTypes.object.isRequired,
isCreatingEntry: PropTypes.bool.isRequired,
isFieldAllowed: PropTypes.bool.isRequired,
isFieldReadable: PropTypes.bool.isRequired,
- layout: PropTypes.object.isRequired,
+ metadatas: PropTypes.shape({
+ description: PropTypes.string,
+ // editable: PropTypes.bool,
+ label: PropTypes.string,
+ // placeholder: PropTypes.string,
+ // visible: PropTypes.bool,
+ }).isRequired,
moveComponentUp: PropTypes.func.isRequired,
moveComponentDown: PropTypes.func.isRequired,
- max: PropTypes.number,
- min: PropTypes.number,
name: PropTypes.string.isRequired,
removeComponentFromDynamicZone: PropTypes.func.isRequired,
};
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/utils/select.js b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/utils/select.js
index c68d978948..0e4af23e45 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/utils/select.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/DynamicZone/utils/select.js
@@ -8,7 +8,6 @@ function useSelect(name) {
createActionAllowedFields,
isCreatingEntry,
formErrors,
- layout,
modifiedData,
moveComponentUp,
moveComponentDown,
@@ -37,7 +36,6 @@ function useSelect(name) {
return {
addComponentToDynamicZone,
formErrors,
- layout,
isCreatingEntry,
isFieldAllowed,
isFieldReadable,
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js
index 96a919d8e0..5d538dd0b5 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js
@@ -84,7 +84,7 @@ const EditView = ({ components, currentEnvironment, models, plugins, slug }) =>
if (isDynamicZone(block)) {
const {
0: {
- 0: { name, fieldSchema },
+ 0: { name, fieldSchema, metadatas },
},
} = block;
@@ -92,8 +92,8 @@ const EditView = ({ components, currentEnvironment, models, plugins, slug }) =>
);
}
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/SingleTypeEditView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/SingleTypeEditView/index.js
index ab369416d2..048a9a3bb9 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/SingleTypeEditView/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/SingleTypeEditView/index.js
@@ -86,7 +86,7 @@ const EditView = ({ components, currentEnvironment, models, plugins, slug }) =>
if (isDynamicZone(block)) {
const {
0: {
- 0: { name, fieldSchema },
+ 0: { name, fieldSchema, metadatas },
},
} = block;
@@ -94,8 +94,8 @@ const EditView = ({ components, currentEnvironment, models, plugins, slug }) =>
);
}