import { Autocomplete, Box, TextField } from "@mui/material"; import { Create, useAutocomplete } from "@refinedev/mui"; import { useForm } from "@refinedev/react-hook-form"; import { Controller } from "react-hook-form"; import { observer } from "mobx-react-lite"; import { META_LANGUAGE } from "../../store/LanguageStore"; import { LanguageSwitch } from "@/components/LanguageSwitch"; import { useEffect, useState } from "react"; import { EVERY_LANGUAGE, Languages, languageStore } from "@stores"; export const CarrierCreate = observer(() => { const { language, setLanguageAction } = languageStore; const { saveButtonProps, refineCore: { formLoading }, register, control, setValue, watch, formState: { errors }, } = useForm({ refineCoreProps: META_LANGUAGE(language), }); const [carrierData, setCarrierData] = useState({ full_name: EVERY_LANGUAGE(""), short_name: EVERY_LANGUAGE(""), slogan: EVERY_LANGUAGE(""), }); useEffect(() => { setValue("full_name", carrierData.full_name[language]); setValue("short_name", carrierData.short_name[language]); setValue("slogan", carrierData.slogan[language]); }, [carrierData, language, setValue]); function updateTranslations(update: boolean = true) { const newCarrierData = { ...carrierData, full_name: { ...carrierData.full_name, [language]: watch("full_name") ?? "", }, short_name: { ...carrierData.short_name, [language]: watch("short_name") ?? "", }, slogan: { ...carrierData.slogan, [language]: watch("slogan") ?? "", }, }; if (update) setCarrierData(newCarrierData); return newCarrierData; } const handleLanguageChange = (lang: Languages) => { updateTranslations(); setLanguageAction(lang); }; const { autocompleteProps: cityAutocompleteProps } = useAutocomplete({ resource: "city", onSearch: (value) => [ { field: "name", operator: "contains", value, }, ], }); const { autocompleteProps: mediaAutocompleteProps } = useAutocomplete({ resource: "media", onSearch: (value) => [ { field: "media_name", operator: "contains", value, }, ], }); return ( ( option.id === field.value ) ?? null } onChange={(_, value) => { field.onChange(value?.id ?? ""); }} getOptionLabel={(item) => { return item ? item.name : ""; }} isOptionEqualToValue={(option, value) => { return option.id === value?.id; }} filterOptions={(options, { inputValue }) => { return options.filter((option) => option.name.toLowerCase().includes(inputValue.toLowerCase()) ); }} renderInput={(params) => ( )} /> )} /> ( option.id === field.value ) ?? null } onChange={(_, value) => { field.onChange(value?.id ?? ""); }} getOptionLabel={(item) => { return item ? item.media_name : ""; }} isOptionEqualToValue={(option, value) => { return option.id === value?.id; }} filterOptions={(options, { inputValue }) => { return options.filter((option) => option.media_name .toLowerCase() .includes(inputValue.toLowerCase()) ); }} renderInput={(params) => ( )} /> )} /> ); });