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