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 }) => ); }