import { useState, useEffect, ChangeEvent } from "react"; import { ModalFooter, ModalBody, ModalHeader, ButtonGroup, Button, Field as FieldComponent, FieldLabel, TextInput, } from "@contentstack/venus-components"; import type { InsertResponse } from "~/types/imagevault"; type ImageEditModalProps = { fieldData: InsertResponse; setData: (data: InsertResponse) => void; closeModal: () => void; }; export default function ImageEditModal({ fieldData, closeModal, setData, }: ImageEditModalProps) { const [altText, setAltText] = useState(""); const [caption, setCaption] = useState(""); const assetUrl = fieldData.MediaConversions[0].Url; useEffect(() => { if (fieldData.Metadata && fieldData.Metadata.length) { const altText = fieldData.Metadata.find((meta) => meta.Name.includes("AltText_") )?.Value; const caption = fieldData.Metadata.find((meta) => meta.Name.includes("Title_") )?.Value; setAltText(altText ?? ""); setCaption(caption ?? ""); } }, [fieldData.Metadata]); function handleSave() { const metaData = fieldData.Metadata ?? []; const newMetadata = metaData.map((meta) => { if (meta.Name.includes("AltText_")) { return { ...meta, Value: altText }; } if (meta.Name.includes("Title_")) { return { ...meta, Value: caption }; } return meta; }); setData({ ...fieldData, Metadata: newMetadata, }); closeModal(); } return ( <> Alt text ) => setAltText(e.target.value) } /> Caption ) => setCaption(e.target.value) } /> Cancel Save > ); }