iter(g135): 表单支持多列布局
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { h } from '@ui-arch/frame';
|
||||
import { button } from './button.js';
|
||||
import { grid } from './grid.js';
|
||||
import type { FormItemHandle, FormItemProps, FormProps, FormRule } from './types.js';
|
||||
|
||||
/*** 执行规则的同步部分(required / min / max / pattern);null 通过,字符串为错误消息 ***/
|
||||
@@ -124,11 +125,13 @@ export function form(props: FormProps, items: FormItemHandle[]): HTMLElement {
|
||||
props.onSubmit?.();
|
||||
};
|
||||
|
||||
const fields = items.map((i) => i.el); // 字段节点:单列直接铺,多列交给栅格
|
||||
const board = props.columns && props.columns > 1 ? grid({ columns: props.columns, gutter: 'lg' }, ...fields) : fields; // 多列布局复用 grid
|
||||
const el = h(
|
||||
'form',
|
||||
{ class: props.layout === 'horizontal' ? 'ua-form ua-form-h' : 'ua-form' },
|
||||
props.errorSummary === false ? null : summary, // 汇总条:关掉时连节点都不插
|
||||
...items.map((i) => i.el),
|
||||
board, // 多列时是一层 grid,单列时是字段数组(h 自动扁平化)
|
||||
actions,
|
||||
);
|
||||
el.addEventListener('submit', (e) => {
|
||||
|
||||
Reference in New Issue
Block a user