diff --git a/src/admin/components/forms/field-types/Array/index.tsx b/src/admin/components/forms/field-types/Array/index.tsx index b158209699..3ca9fa4999 100644 --- a/src/admin/components/forms/field-types/Array/index.tsx +++ b/src/admin/components/forms/field-types/Array/index.tsx @@ -76,8 +76,6 @@ const ArrayFieldType: React.FC = (props) => { return validate(value, { ...options, minRows, maxRows, required }); }, [maxRows, minRows, required, validate]); - const [disableFormData, setDisableFormData] = useState(true); - const { showError, errorMessage, @@ -86,7 +84,6 @@ const ArrayFieldType: React.FC = (props) => { } = useField({ path, validate: memoizedValidate, - disableFormData, condition, }); @@ -194,14 +191,17 @@ const ArrayFieldType: React.FC = (props) => { }, [formContext, path, getPreference, preferencesKey, initCollapsed]); useEffect(() => { - setValue(rows?.length || 0, true); + if (typeof rows !== 'undefined') { + const disableFormData = rows.length > 0; - if (rows?.length === 0) { - setDisableFormData(false); - } else { - setDisableFormData(true); + dispatchFields({ + type: 'UPDATE', + path, + disableFormData, + value: rows.length, + }); } - }, [rows, setValue]); + }, [rows, dispatchFields, path]); const hasMaxRows = maxRows && rows?.length >= maxRows; diff --git a/src/admin/components/forms/field-types/Blocks/index.tsx b/src/admin/components/forms/field-types/Blocks/index.tsx index 0202fba003..b7f9c01570 100644 --- a/src/admin/components/forms/field-types/Blocks/index.tsx +++ b/src/admin/components/forms/field-types/Blocks/index.tsx @@ -76,7 +76,6 @@ const BlocksField: React.FC = (props) => { return validate(value, { ...options, minRows, maxRows, required }); }, [maxRows, minRows, required, validate]); - const [disableFormData, setDisableFormData] = useState(true); const [selectorIndexOpen, setSelectorIndexOpen] = useState(); const { @@ -87,7 +86,6 @@ const BlocksField: React.FC = (props) => { } = useField({ path, validate: memoizedValidate, - disableFormData, condition, }); @@ -200,14 +198,17 @@ const BlocksField: React.FC = (props) => { }, [formContext, path, getPreference, preferencesKey, initCollapsed]); useEffect(() => { - setValue(rows?.length || 0, true); + if (typeof rows !== 'undefined') { + const disableFormData = rows.length > 0; - if (rows?.length === 0) { - setDisableFormData(false); - } else { - setDisableFormData(true); + dispatchFields({ + type: 'UPDATE', + path, + disableFormData, + value: rows.length, + }); } - }, [rows, setValue]); + }, [rows, dispatchFields, path]); const hasMaxRows = maxRows && rows?.length >= maxRows; diff --git a/src/admin/components/forms/useField/index.tsx b/src/admin/components/forms/useField/index.tsx index 748838a1f5..cded6eccdf 100644 --- a/src/admin/components/forms/useField/index.tsx +++ b/src/admin/components/forms/useField/index.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useMemo } from 'react'; import { useAuth } from '../../utilities/Auth'; import { useFormProcessing, useFormSubmitted, useFormModified, useForm, useFormFields } from '../Form/context'; import { Options, FieldType } from './types'; @@ -28,7 +28,6 @@ const useField = (options: Options): FieldType => { const value = field?.value as T; const initialValue = field?.initialValue as T; - const fieldDisableFormData = field?.disableFormData; const valid = typeof field?.valid === 'boolean' ? field.valid : true; const showError = valid === false && submitted; @@ -122,16 +121,6 @@ const useField = (options: Options): FieldType => { valid, ]); - useEffect(() => { - if (fieldDisableFormData !== disableFormData) { - dispatchField({ - type: 'UPDATE', - path, - disableFormData, - }); - } - }, [disableFormData, fieldDisableFormData, path, dispatchField]); - return result; };