@longhongguo/form-create-ant-design-vue 3.2.60 → 3.2.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longhongguo/form-create-ant-design-vue",
3
- "version": "3.2.60",
3
+ "version": "3.2.61",
4
4
  "description": "AntDesignVue版本低代码表单|FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。",
5
5
  "main": "./dist/form-create.min.js",
6
6
  "module": "./dist/form-create.esm.js",
@@ -44,7 +44,8 @@ export default {
44
44
 
45
45
  // 映射 Ant Design Vue Flex 组件的 props
46
46
  ctx.prop.props.vertical = vertical
47
- ctx.prop.props.wrap = wrap
47
+ // 注意:不设置 wrap prop,因为 Ant Design Vue 的 Flex 组件的 wrap prop 类型可能不匹配
48
+ // 换行功能完全通过 CSS 样式来实现
48
49
  ctx.prop.props.justify = justify
49
50
  ctx.prop.props.align = align
50
51
 
@@ -53,55 +54,56 @@ export default {
53
54
  ctx.prop.props.gap = props.gap
54
55
  }
55
56
 
56
- // 直接修改 ctx.rule.style,确保样式能够正确应用
57
- // 因为 form-create 会将 ctx.rule.style 合并到最终的样式对象中
58
- if (!ctx.rule.style) {
59
- ctx.rule.style = {}
60
- }
61
-
62
- // 保留用户设置的 display: 'flex'(如果存在)
63
- const userDisplay = ctx.rule.style.display
64
- const existingStyle = { ...ctx.rule.style }
57
+ // 合并样式(不要直接修改 ctx.rule.style,避免响应式循环)
58
+ const existingStyle = ctx.rule.style || {}
59
+ // 排除已经被 Flex 组件处理的样式
60
+ const {
61
+ display: userDisplay,
62
+ flexDirection: _fd,
63
+ flexWrap: _fw,
64
+ justifyContent: _jc,
65
+ alignItems: _ai,
66
+ alignContent: _ac,
67
+ ...otherStyles
68
+ } = existingStyle
65
69
 
66
70
  // 构建样式对象,确保从 props 读取的配置能够应用到样式中
67
- ctx.rule.style = {
71
+ const flexStyles = {
68
72
  // 保留用户设置的 display,如果没有则设置为 'flex'
69
73
  display: userDisplay || 'flex',
70
74
  // 确保 flex 容器占满整行
71
75
  width: '100%',
72
76
  // 在样式中设置 flexWrap,确保从 props 读取的配置能够生效
73
- // 这是关键的:将 props.flexWrap 的值直接应用到 style
77
+ // 这是关键的:将 props.flexWrap 的值('wrap' 'nowrap')应用到样式中
74
78
  flexWrap: flexWrap,
75
- // 保留其他用户自定义样式(排除 flex 相关的,避免冲突)
76
- ...Object.keys(existingStyle).reduce((acc, key) => {
77
- // 排除 flex 相关的样式属性,因为我们通过 props 或新的样式设置
78
- if (
79
- ![
80
- 'flexDirection',
81
- 'flexWrap',
82
- 'justifyContent',
83
- 'alignItems',
84
- 'alignContent'
85
- ].includes(key)
86
- ) {
87
- acc[key] = existingStyle[key]
88
- }
89
- return acc
90
- }, {})
79
+ // 合并其他用户自定义样式
80
+ ...otherStyles
91
81
  }
92
82
 
93
83
  // 如果设置了 alignContent,添加到样式中
94
84
  if (alignContent && alignContent !== 'flex-start') {
95
- ctx.rule.style.alignContent = alignContent
85
+ flexStyles.alignContent = alignContent
96
86
  }
97
87
 
98
- // 同时也设置到 ctx.prop.props.style,作为备用
99
- if (!ctx.prop.props.style) {
100
- ctx.prop.props.style = {}
88
+ // 同时设置到 ctx.prop.style 和 ctx.prop.props.style
89
+ // form-create 会将 prop.style 应用到组件上,但有时也需要 prop.props.style
90
+ // 保留已有的 prop.style 和 prop.props.style,然后合并新的样式
91
+ const existingPropStyle = ctx.prop.style || {}
92
+ const existingPropsStyle = ctx.prop.props?.style || {}
93
+
94
+ // 合并样式到 ctx.prop.style(保留已有样式,新的样式优先)
95
+ ctx.prop.style = {
96
+ ...existingPropStyle,
97
+ ...flexStyles
98
+ }
99
+
100
+ // 同时也合并到 props.style,确保样式生效
101
+ if (!ctx.prop.props) {
102
+ ctx.prop.props = {}
101
103
  }
102
104
  ctx.prop.props.style = {
103
- ...ctx.prop.props.style,
104
- ...ctx.rule.style
105
+ ...existingPropsStyle,
106
+ ...flexStyles
105
107
  }
106
108
 
107
109
  // 确保 children 存在