diff --git a/src/admin/components/forms/field-types/Upload/Input.tsx b/src/admin/components/forms/field-types/Upload/Input.tsx index 683ad3d2f6..d4bbeea54d 100644 --- a/src/admin/components/forms/field-types/Upload/Input.tsx +++ b/src/admin/components/forms/field-types/Upload/Input.tsx @@ -11,6 +11,7 @@ import { FieldTypes } from '..'; import AddModal from './Add'; import SelectExistingModal from './SelectExisting'; import { SanitizedCollectionConfig } from '../../../../../collections/config/types'; +import { useEditDepth, EditDepthContext } from '../../../utilities/EditDepth'; import './index.scss'; @@ -58,13 +59,15 @@ const UploadInput: React.FC = (props) => { filterOptions, } = props; - const { toggleModal } = useModal(); + const { toggleModal, modalState } = useModal(); + const editDepth = useEditDepth(); - const addModalSlug = `${path}-add`; - const selectExistingModalSlug = `${path}-select-existing`; + const addModalSlug = `${path}-add-depth-${editDepth}`; + const selectExistingModalSlug = `${path}-select-existing-depth-${editDepth}`; const [file, setFile] = useState(undefined); const [missingFile, setMissingFile] = useState(false); + const [modalToRender, setModalToRender] = useState(); const classes = [ 'field-type', @@ -98,6 +101,12 @@ const UploadInput: React.FC = (props) => { serverURL, ]); + useEffect(() => { + if (!modalState[addModalSlug]?.isOpen && !modalState[selectExistingModalSlug]?.isOpen) { + setModalToRender(undefined); + } + }, [modalState, addModalSlug, selectExistingModalSlug]); + return (
= (props) => { buttonStyle="secondary" onClick={() => { toggleModal(addModalSlug); + setModalToRender(addModalSlug); }} > Upload new @@ -142,33 +152,40 @@ const UploadInput: React.FC = (props) => { buttonStyle="secondary" onClick={() => { toggleModal(selectExistingModalSlug); + setModalToRender(selectExistingModalSlug); }} > Choose from existing
)} - { - setMissingFile(false); - onChange(e); - }, - }} - /> - + + {modalToRender === addModalSlug && ( + { + setMissingFile(false); + onChange(e); + }, + }} + /> + )} + {modalToRender === selectExistingModalSlug && ( + + )} +