From 29b87cafae3e36a43978b16dd170749bbd2a0a6e Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 13 六月 2025 14:05:04 +0800 Subject: [PATCH] no message --- rsf-admin/src/page/components/EditableTextField.jsx | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 48 insertions(+), 0 deletions(-) diff --git a/rsf-admin/src/page/components/EditableTextField.jsx b/rsf-admin/src/page/components/EditableTextField.jsx new file mode 100644 index 0000000..696d51c --- /dev/null +++ b/rsf-admin/src/page/components/EditableTextField.jsx @@ -0,0 +1,48 @@ +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; \ No newline at end of file -- Gitblit v1.9.1