import { TextField, useUpdate, useNotify, useRefresh, useRecordContext, useTranslate, useGetResourceLabel } from 'react-admin';
|
import { TextField as MuiTextField } from '@mui/material';
|
import { useState } from 'react';
|
|
const EditableTextField = ({ source, label, resource, isBlur }) => {
|
const record = useRecordContext();
|
const translate = useTranslate();
|
const [value, setValue] = useState(record[source]);
|
const [update] = useUpdate();
|
const notify = useNotify();
|
const refresh = useRefresh();
|
label = label ? label : ""
|
isBlur = isBlur == undefined ? false : isBlur
|
|
const handleBlur = () => {
|
isBlur ?
|
update(
|
resource,
|
{ id: record.id, data: { [source]: value } },
|
{
|
onSuccess: () => {
|
const succ = translate('common.action.updateSucc')
|
notify(succ, { type: 'success' });
|
refresh();
|
},
|
onError: () => {
|
const failed = translate('common.action.updateSucc')
|
notify(failed, { type: 'error' });
|
setValue(record[source]);
|
}
|
}
|
) :
|
{}
|
};
|
|
return (
|
<MuiTextField
|
value={value}
|
onChange={(e) => setValue(e.target.value)}
|
label={translate(label)}
|
onBlur={handleBlur}
|
fullWidth
|
/>
|
);
|
};
|
|
|
export default EditableTextField;
|