import {useState, FC} from 'react' import {toAbsoluteUrl} from '../../../../../../_metronic/helpers' import {IProfileDetails, profileDetailsInitValues as initialValues} from '../SettingsModel' import * as Yup from 'yup' import {useFormik} from 'formik' const profileDetailsSchema = Yup.object().shape({ fName: Yup.string().required('First name is required'), lName: Yup.string().required('Last name is required'), company: Yup.string().required('Company name is required'), contactPhone: Yup.string().required('Contact phone is required'), companySite: Yup.string().required('Company site is required'), country: Yup.string().required('Country is required'), language: Yup.string().required('Language is required'), timeZone: Yup.string().required('Time zone is required'), currency: Yup.string().required('Currency is required'), }) const ProfileDetails: FC = () => { const [data, setData] = useState(initialValues) const updateData = (fieldsToUpdate: Partial): void => { const updatedData = Object.assign(data, fieldsToUpdate) setData(updatedData) } const [loading, setLoading] = useState(false) const formik = useFormik({ initialValues, validationSchema: profileDetailsSchema, onSubmit: (values) => { setLoading(true) setTimeout(() => { values.communications.email = data.communications.email values.communications.phone = data.communications.phone values.allowMarketing = data.allowMarketing const updatedData = Object.assign(data, values) setData(updatedData) setLoading(false) }, 1000) }, }) return (

Profile Details

{formik.touched.fName && formik.errors.fName && (
{formik.errors.fName}
)}
{formik.touched.lName && formik.errors.lName && (
{formik.errors.lName}
)}
{formik.touched.company && formik.errors.company && (
{formik.errors.company}
)}
{formik.touched.contactPhone && formik.errors.contactPhone && (
{formik.errors.contactPhone}
)}
{formik.touched.companySite && formik.errors.companySite && (
{formik.errors.companySite}
)}
{formik.touched.country && formik.errors.country && (
{formik.errors.country}
)}
{formik.touched.language && formik.errors.language && (
{formik.errors.language}
)}
Please select a preferred language, including date, time, and number formatting.
{formik.touched.timeZone && formik.errors.timeZone && (
{formik.errors.timeZone}
)}
{formik.touched.currency && formik.errors.currency && (
{formik.errors.currency}
)}
{ updateData({allowMarketing: !data.allowMarketing}) }} />
) } export {ProfileDetails}