Przeglądaj źródła

fix: form修改属性改为失焦保存

wzl 1 rok temu
rodzic
commit
c176e5da95

+ 2 - 2
packages/core/src/form/check_box.js

@@ -1,6 +1,6 @@
 import Base from '../annotation/base';
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class CheckBox extends Base {
   
@@ -495,7 +495,7 @@ export default class CheckBox extends Base {
       if (!this.hidden && document.getElementsByClassName('right-panel')[0].className.indexOf('closed') !== -1) {
         document.getElementById('propertyPanelButton').click()
       }
-      onClickOutside([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
+      onClickOutsideUp([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
 
     } else {
       this.annotation.isChecked = this.annotation.isChecked == 0 ? 1 : 0

+ 4 - 4
packages/core/src/form/combo_box.js

@@ -1,7 +1,7 @@
 import Base from '../annotation/base';
 import { MARGIN_DISTANCE } from '../../constants'
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class ComboBox extends Base {
   
@@ -497,7 +497,7 @@ export default class ComboBox extends Base {
       if (!this.hidden && document.getElementsByClassName('right-panel')[0].className.indexOf('closed') !== -1) {
         document.getElementById('propertyPanelButton').click()
       }
-      onClickOutside([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
+      onClickOutsideUp([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
     }
   }
 
@@ -891,8 +891,8 @@ export default class ComboBox extends Base {
           items.splice(fromIndex, 2, items[fromIndex + 1], items[fromIndex])
         }
         props.moveOption.item = {
-          value: items[toIndex].Value,
-          string: items[toIndex].String
+          Value: items[toIndex].Value,
+          String: items[toIndex].String
         }
 
         const optionElement = this.selectElement.options[fromIndex]

+ 2 - 2
packages/core/src/form/list_box.js

@@ -1,6 +1,6 @@
 import Base from '../annotation/base';
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class ListBox extends Base {
 
@@ -467,7 +467,7 @@ export default class ListBox extends Base {
       if (!this.hidden && document.getElementsByClassName('right-panel')[0].className.indexOf('closed') !== -1) {
         document.getElementById('propertyPanelButton').click()
       }
-      onClickOutside([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
+      onClickOutsideUp([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
     } else {
       if (event.target && event.target.className === 'option') {
         const children = event.target.parentNode.children

+ 2 - 2
packages/core/src/form/push_button.js

@@ -1,6 +1,6 @@
 import Base from '../annotation/base';
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class PushButton extends Base {
   
@@ -451,7 +451,7 @@ export default class PushButton extends Base {
       }
 
       const ignoreList = [this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]]
-      onClickOutside(ignoreList, this.handleOutside.bind(this))
+      onClickOutsideUp(ignoreList, this.handleOutside.bind(this))
     } else {
       if (this.annotation.actionType == 1 && this.annotation.destPage) {
         this.eventBus.dispatch('pageNumberChanged', this.annotation.destPage)

+ 2 - 2
packages/core/src/form/radio_button.js

@@ -1,6 +1,6 @@
 import Base from '../annotation/base';
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class RadioButton extends Base {
   
@@ -496,7 +496,7 @@ export default class RadioButton extends Base {
       if (!this.hidden && document.getElementsByClassName('right-panel')[0].className.indexOf('closed') !== -1) {
         document.getElementById('propertyPanelButton').click()
       }
-      onClickOutside([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
+      onClickOutsideUp([this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]], this.handleOutside.bind(this))
 
     } else {
       this.annotation.isChecked = this.annotation.isChecked == 0 ? 1 : 0

+ 2 - 2
packages/core/src/form/text_field.js

@@ -1,7 +1,7 @@
 import Base from '../annotation/base';
 import { MARGIN_DISTANCE } from '../../constants'
 import { getActualPoint, getClickPoint, createSvg, createElement } from '../annotation/utils';
-import { onClickOutside } from '../ui_utils'
+import { onClickOutsideUp } from '../ui_utils'
 
 export default class TextField extends Base {
   
@@ -431,7 +431,7 @@ export default class TextField extends Base {
       }
 
       const ignoreList = [this.annotationContainer, this.outerLine, this.deletetButton, document.getElementById('propertyPanelButton'), document.getElementsByClassName('right-panel')[0]]
-      onClickOutside(ignoreList, this.handleOutside.bind(this))
+      onClickOutsideUp(ignoreList, this.handleOutside.bind(this))
 
       this.textContainer.style.pointerEvents = 'none'
       this.textContainer.style.cursor = 'pointer'

+ 23 - 0
packages/core/src/ui_utils.js

@@ -1626,6 +1626,28 @@ const onClickOutside = (el, cb) => {
   document.addEventListener(isMobileDevice ? 'touchstart' : 'mousedown', listener);
 }
 
+const onClickOutsideUp = (el, cb) => {
+  const listener = (event) => {
+    let clickOutside = true
+    if (Array.isArray(el)) {
+      el.forEach((item) => {
+        if (!item || item.contains(event.target)) {
+          clickOutside = false
+        }
+      })
+    } else {
+      if (!el || el.contains(event.target)) {
+        return
+      }
+    }
+    if (!clickOutside) return
+    cb && cb(event)
+    document.removeEventListener(isMobileDevice ? 'touchend' : 'mouseup', listener);
+  }
+
+  document.addEventListener(isMobileDevice ? 'touchend' : 'mouseup', listener);
+}
+
 const pdfDateStringRegex = new RegExp(
   "^D:" + // Prefix (required)
     "(\\d{4})" + // Year (required)
@@ -1787,6 +1809,7 @@ export {
   convertColorToCppFormat,
   convertCppRGBToHex,
   onClickOutside,
+  onClickOutsideUp,
   findIndex,
   toDateObject,
   setCss,

+ 1 - 2
packages/core/src/worker/compdfkit_worker.js

@@ -2067,8 +2067,7 @@ function setWidgetFieldName(data) {
   const { annotPtr, fieldName: rawFieldName } = data
   const fieldName = stringToNewUTF8(rawFieldName)
 
-  const result = Module._SetWidgetFieldName(annotPtr, fieldName)
-  console.log(result)
+  Module._SetWidgetFieldName(annotPtr, fieldName)
 }
 
 function setAnnotFontData(data) {

+ 5 - 14
packages/webview/src/components/RightPanel/RightPanel.vue

@@ -24,7 +24,7 @@
         <!-- 按钮文字 -->
         <div v-if="selectedElement === 'pushbutton' && toolMode === 'form'" class="content-block">
           <h2>{{ $t('rightPanel.buttonText') }}</h2>
-          <input type="text" v-model="property.title">
+          <input type="text" v-model="property.title" @blur="handleProperty('title')">
         </div>
         <!-- 是否可见 -->
         <div class="content-block">
@@ -260,6 +260,9 @@
     if (key === 'fieldName') {
       useDocument.setPropertyPanel({ 'fieldName': property.fieldName })
     }
+    if (key === 'title') {
+      useDocument.setPropertyPanel({ 'title': property.title })
+    }
     if (key === 'destPage') {
       const destPageValue = property.destPage
       if (destPageValue !== '' && destPageValue != oldDestPage) {
@@ -293,10 +296,6 @@
     }
   })
 
-  watch(() => property.fieldName, (newValue, oldValue) => {
-    useDocument.setPropertyPanel({'fieldName': newValue})
-  })
-
   watch(() => property.isHidden, (newValue, oldValue) => {
     useDocument.setPropertyPanel({'isHidden': newValue})
   })
@@ -336,10 +335,6 @@
     useDocument.setPropertyPanel({'isMultiLine': newValue})
   })
   
-  watch(() => property.title, (newValue, oldValue) => {
-    useDocument.setPropertyPanel({'title': newValue})
-  })
-  
   watch(() => property.projectList, (newValue, oldValue) => {
     useDocument.setPropertyPanel({'projectList': newValue})
   })
@@ -427,11 +422,7 @@
       })
     }
     selectedItemIndex.value = null
-    if (property.isChecked) {
-      useDocument.setPropertyPanel({'isChecked': property.isChecked, 'items': items.value})
-    } else {
-      useDocument.setPropertyPanel({'item': editItem.value})
-    }
+    useDocument.setPropertyPanel({'item': editItem.value})
     editItem.value = ''
   }