iter(g169): 表单字段支持跨列

This commit is contained in:
HIsheR
2026-10-26 16:16:07 +08:00
parent adc94cabf5
commit bd98fc8e70
7 changed files with 26 additions and 5 deletions
+1
View File
@@ -39,6 +39,7 @@ export function formItem(props: FormItemProps, control: HTMLElement): FormItemHa
const hint = props.hint ? h('div', { class: 'ua-form-hint' }, props.hint) : null; // 辅助说明:报错时隐藏,避免与错误挤在一起
const label = h('label', { class: 'ua-form-label' }, props.label, props.required ? h('i', { class: 'ua-form-req' }, '*') : null);
const el = h('div', { class: 'ua-form-item' }, label, h('div', { class: 'ua-form-control' }, control, hint, error));
if (props.span) el.style.gridColumn = `span ${props.span}`; // 多列布局里跨列;单列容器下由 CSS 还原为整行
let seq = 0; // 校验轮次:异步结论回来时若已有更新的一轮,丢弃旧结果(防乱序覆盖)
/*** 错误态落点:控件根 + 内部原生控件,保证 select / checkbox 这类包裹式控件也能标红 ***/
+1
View File
@@ -400,6 +400,7 @@ export interface FormItemProps {
rules?: FormRule[]; // 附加校验规则,按序执行
validateOn?: 'input' | 'blur' | 'submit'; // 校验时机;缺省 blur
hint?: string; // 控件下方辅助说明(格式提示等);报错时让位给错误文案
span?: number; // 多列表单里本字段占几列(如整宽的多行文本);单列布局下无效
}
/*** 表单字段句柄:form 聚合校验用 ***/
+7 -1
View File
@@ -1769,6 +1769,11 @@
"t": "string",
"d": "控件下方辅助说明(格式提示等);报错时让位给错误文案"
},
{
"n": "(formItem)span",
"t": "number",
"d": "多列表单里本字段占几列(如整宽的多行备注);单列布局或窄屏下自动退回整行"
},
{
"n": "onReset",
"t": "() => void",
@@ -1800,7 +1805,8 @@
"rules.validator 返回 Promise 即为异步规则(如「邀请码是否已被使用」远程校验):提交时逐项 await,校验期间提交按钮禁用,结论按轮次取舍避免乱序覆盖",
"formItem 返回 { el, validate, validateAsync } 句柄:validate 只跑同步规则(供 blur/input 即时反馈),validateAsync 逐条 await 供 form 聚合提交",
"需要给字段加格式说明就传 hint:平时显示在控件下方,校验失败时自动让位给错误文案,同一位置不堆两行",
"字段多的编辑页传 columns: 2 或 3 走多列栅格:列间距与窄屏堆叠沿用 grid,按钮区始终整行;单列表单不要传(默认 1)"
"字段多的编辑页传 columns: 2 或 3 走多列栅格:列间距与窄屏堆叠沿用 grid,按钮区始终整行;单列表单不要传(默认 1)",
"多列表单里想整宽就传 span:formItem({ span: 2 }, textarea(...)) 会占满两列,窄屏单列时自动忽略跨列(否则会撑出横向滚动)"
]
},
{
+3
View File
@@ -4240,6 +4240,9 @@ h5.ua-type-title { font-size: var(--ua-font-size-md); }
.ua-grid {
grid-template-columns: 1fr;
}
.ua-grid > * {
grid-column: auto !important; /* 单列下忽略跨列请求,否则会凭空多出一列撑出横向滚动 */
}
}
/* —— 悬浮操作按钮:fixed 停靠角落,hover 上浮 + 按压回缩 —— */