import { Formik, Field, Form } from "formik"; import type { CameraConfig, CameraSettingErrorValues, CameraSettingValues, } from "../../types/types"; import { useMemo, useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faEye, faEyeSlash } from "@fortawesome/free-regular-svg-icons"; type CameraSettingsProps = { initialData: CameraConfig; updateCameraConfig: (values: CameraSettingValues) => Promise | void; }; const CameraSettingFields = ({ initialData, updateCameraConfig, }: CameraSettingsProps) => { const [showPwd, setShowPwd] = useState(false); const initialValues = useMemo( () => ({ friendlyName: initialData?.propLEDDriverControlURI?.value ?? "", cameraAddress: "", userName: "", password: "", id: initialData?.id, }), [initialData?.id, initialData?.propLEDDriverControlURI?.value] ); const validateValues = (values: CameraSettingValues) => { const errors: CameraSettingErrorValues = {}; if (!values.friendlyName) errors.friendlyName = "Required"; if (!values.cameraAddress) errors.cameraAddress = "Required"; if (!values.userName) errors.userName = "Required"; if (!values.password) errors.password = "Required"; return errors; }; const handleSubmit = (values: CameraSettingValues) => { updateCameraConfig(values); }; return ( {({ errors, touched }) => (
{touched.friendlyName && errors.friendlyName && ( {errors.friendlyName} )}
{touched.cameraAddress && errors.cameraAddress && ( {errors.cameraAddress} )}
{touched.userName && errors.userName && ( {errors.userName} )}
{touched.password && errors.password && ( {errors.password} )}
setShowPwd((s) => !s)} icon={showPwd ? faEyeSlash : faEye} />
)}
); }; export default CameraSettingFields;