bill 2 år sedan
förälder
incheckning
42d574a21e
2 ändrade filer med 28 tillägg och 13 borttagningar
  1. 8 4
      src/views/draw-file/board/index.js
  2. 20 9
      src/views/draw-file/eshape.tsx

+ 8 - 4
src/views/draw-file/board/index.js

@@ -32,7 +32,6 @@ export const create = (store, canvas) => {
       }
     }
     const update = (newData) => {
-      shape.data.content = newData
       layer.uiControl.setAttributes(type, 'update', newData)
     }
     switch (type) {
@@ -42,13 +41,19 @@ export const create = (store, canvas) => {
           { width: 160, height: 60, value: '', colIndex: 1, rowIndex: 0 },
         ]
         shape.data.content = data
-        shape.setContent = update
+        shape.setContent = (newData) => {
+          shape.data.content = newData
+          update(newData)
+        }
         break;
       }
       case text: {
         data = data || ''
         shape.data.text = data
-        shape.setText = update
+        shape.setText = (newData) => {
+          shape.data.text = newData
+          update(newData)
+        }
         break;
       }
     }
@@ -92,7 +97,6 @@ export const create = (store, canvas) => {
     forward() {
       history.handleRedo()
     },
-
     setImage(url) {
       refs.baseMap.changeImage(url)
       refs.bus.emit('storeChange')

+ 20 - 9
src/views/draw-file/eshape.tsx

@@ -33,15 +33,26 @@ import type { RefObject, ComponentType } from 'react'
 // )
 
 
-const TextInput = ({ shape }: { shape: ExtractShape<'text'> }) => (
-  <Form.Item label="内容">
-    <Input 
-      style={{ width: 120 }}
-      defaultValue={shape.data.text} 
-      onChange={(ev) => shape.setText(ev.target.value)} 
-    />
-  </Form.Item>
-)
+const TextInput = ({ shape }: { shape: ExtractShape<'text'> }) => {
+  const [text, setText] = useState(shape.data.text)
+  const onChang = () => {
+    console.log('text', text, shape.data.text)
+    if (text !== shape.data.text) {
+      shape.setText(text)
+    }
+  }
+  return (
+    <Form.Item label="内容">
+      <Input 
+        style={{ width: 120 }}
+        value={text}
+        onKeyDown={ev => ev.key === 'Enter' && onChang()}
+        onBlur={onChang}
+        onChange={ev => setText(ev.target.value)}
+      />
+    </Form.Item>
+  )
+}
 
 const ContentInput = ({ shape }: { shape: ExtractShape<'content'> }) => {
   const [edit, setEdit] = useState(false)