alibaba / formily

📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3
https://formilyjs.org/
MIT License
11.32k stars 1.48k forks source link

[Bug Report] FormGrid 设置 gridArea 相关样式编译问题 #3853

Open lajidemo opened 1 year ago

lajidemo commented 1 year ago

Reproduction link

Edit on CodeSandbox

Steps to reproduce

设置 FormGrid style样式:style: { gridTemplateArea: input input . textarea textarea . }, 再设置字段 UI 包装器组件属性 x-decorator-props :{ gridSpan: 2, style: { gridArea: "textarea" } }

What is expected?

grid-area: textarea / span 2 / textarea / auto

What is actually happening?

grid-area: textarea / span 1 / textarea / auto

Package

@formily/antd-v5@2.2.24


lajidemo commented 1 year ago

补充案例链接:https://codesandbox.io/s/mystifying-poitras-h382vh?file=/App.tsx:660-779 看第二个字段编译后的样式变成了 grid-area: textarea / span 1 / textarea / auto

Landon-CN commented 1 year ago

Form Grid会自动对children的style自动添加样式,如果你要我觉得可以自己用div实现,而不是用formGrid

lajidemo commented 1 year ago

嗯嗯,我知道 FormGrid 内部会根据 gridSpan 属性对 child 添加 grid-column 内联样式,但我没查到设置 grid-area 的地方 我想知道的是:用户添加了 grid-area 样式,那 formily 是在什么地方将 grid-area 和 grid-column 合并成一个 grid-area 的 而且是有的字段是正常合并的:设置了 gridSpan:2,编辑结果为 input / span 2/ input/auto, 有的合并异常了:设置了 gridSpan: 2,编辑结果为 textarea / span 1/ textarea/auto,

Landon-CN commented 1 year ago

https://github.com/alibaba/formily/blob/formily_next/packages/grid/src/index.ts#L130 应该在这一行