in src/ui/editor/complex/AForm.tsx [285:316]
private _flowForm(objectFields: MFieldSchema[], uispec: M3UISpec, column: number) {
const hideMap = MUtil.hideMap(MUtil.get(this.props.database, this.props.path), objectFields, uispec);
// 先计算一遍label的宽度,即使有隐藏的字段,确保展示出来时也不会因为label太长布局变化。
// table防止折行是保底的
let labelWidth = 0;
if (uispec.layout === "horizontal") {
for (let f of objectFields) {
let label = f.label;
labelWidth = Math.max(labelWidth, MUtil.antdTextWidth(label ?? ""))
}
}
// 然后再把表单表格画出来
const items = [];
for (let f of objectFields) {
items.push(this.formItem(hideMap[f.name], hideMap, f, objectFields, uispec,
this.props.morph, labelWidth, `layout值无效:${uispec.layout}`, column
))
}
if (column > 1) {
return <div className="AForm" style={{
display: 'flex',
flexFlow: 'row wrap',
alignContent: 'flex-start',
}}>
{items}
</div>
} else {
return <div className="AForm">{items}</div>
}
}