Bläddra i källkod

fix: 修改样式选中

jiaxing.liao 4 veckor sedan
förälder
incheckning
7786c2df0f

+ 2 - 9
src/renderer/src/views/designer/config/property/components/StylePart.vue

@@ -138,18 +138,11 @@ const getFields = (arr: ComponentSchema[]) => {
 const openAllStyle = computed({
   get() {
     const formData = props.formData || {}
-    const valueLength = Object.keys(formData).length
     const fields = getFields(props.formItemsSchema || []).flat(Infinity)
-
-    let hasNotValue = false
-    fields.forEach((field) => {
-      if (!has(formData, field) && field !== 'part') {
-        hasNotValue = true
-      }
-    })
+    const styleFields = fields.filter((field) => field !== 'part')
 
     // 所有样式都开启
-    return !!valueLength && !hasNotValue
+    return styleFields.some((field) => has(formData, field))
   },
   set(val: boolean) {
     emit('change', val ? 'select' : 'cancel')

+ 7 - 1
src/renderer/src/views/designer/config/property/index.vue

@@ -332,7 +332,7 @@ const onChangeStateStyle = (field: string, type: 'add' | 'delete') => {
     if (styleFormData.value?.[field]) {
       delete styleFormData.value[field]
       // 如果样式全部删除,只有part和theme那么这一条样式也删掉
-      if (Object.keys(styleFormData.value).length === 2) {
+      if (!hasAnySubStyleEnabled(styleFormData.value)) {
         deleteStyle()
       }
     }
@@ -350,6 +350,12 @@ const getStyleFields = (arr: Record<string, any>[]) => {
   return keys
 }
 
+const hasAnySubStyleEnabled = (style: Record<string, any>) => {
+  const fields = getStyleFields(formConfig.value.styles || []).flat(Infinity)
+
+  return fields.some((field) => field !== 'part' && has(style, field))
+}
+
 /**
  * 开启/关闭控件部件状态样式
  * @param type