import { Tooltip } from '@/components/@extended'; import { TextField } from '@/components/ra-fields/TextField'; import { useSx } from '@/hooks'; import { localizedValueHasAllLocales } from '@/utils'; import { FlagFilled, FlagOutlined } from '@ant-design/icons'; import { Stack, Typography, useTheme } from '@mui/material'; import _ from 'lodash'; import { useLocaleState, useLocales, useRecordContext } from 'ra-core'; import { TextFieldProps } from 'ra-ui-materialui'; import { ReactElement, useMemo } from 'react'; type ILocalizedTextFieldProps = TextFieldProps; function LocalizedTextField(props: ILocalizedTextFieldProps): JSX.Element { const theme = useTheme(); const locales = useLocales(); const { source = '' } = props; const record = useRecordContext(props); const value = record[source]; const isMissingLocalizations = !localizedValueHasAllLocales(value, locales); const sx = useSx(props, { flex: 1 }); const [currentLocale] = useLocaleState(); const IconElement: ReactElement = useMemo(() => { return isMissingLocalizations ? : ; }, [isMissingLocalizations, theme.palette.warning.main]); const tooltipTitle = useMemo(() => { return ( {_.map(locales, (l, index) => { return {`${l.locale.toUpperCase()}: ${(value ?? {})[l.locale] ?? ''}`}; })} ); }, [value, locales]); return ( // @ts-ignore {IconElement} ); } export type { ILocalizedTextFieldProps }; export { LocalizedTextField };