private _flowForm()

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>
    }
  }