iter(g108): 表单补错误汇总条与 onError

This commit is contained in:
HIsheR
2026-10-26 14:01:07 +08:00
parent 4d76ba086a
commit 5601e59cf4
8 changed files with 61 additions and 5 deletions
+8
View File
@@ -1220,6 +1220,14 @@
"acceptance": "PopoverProps 新增受控 open 信号(不传行为不变);新增 popconfirm(props, trigger):title/description/confirmText/cancelText/variant/placement/onConfirm/onCancel/open,确定先收起再回调,取消 / 点外部 / Esc 走 onCancel,展开即聚焦「取消」;组件 58→59,manifest/docs/README/AGENTS/ARCHITECTURE/demo 同步;npm run check 全绿",
"notes": "自补:组件补充;复用 popover + button,不重复实现定位与 Esc 栈",
"status": "done"
},
{
"id": "g108",
"title": "表单提交失败给汇总条与回调",
"motivation": "提交失败时只把焦点扔到第一处错误:视觉上用户得自己数还有几处红框,读屏用户更是只听到某个输入框的 aria-invalid,完全不知道总共有几项要改;调用方也拿不到「这次失败了几项」做埋点或顶部提示",
"acceptance": "form 提交时统计不通字段数,顶部渲染 role=alert 的汇总条「有 N 项需要修改,已定位到第一处」(通过则隐藏);FormProps 新增 onError(count) 与 errorSummary(缺省 true,传 false 不插节点);文档参数表与演示说明同步;npm run check 全绿",
"notes": "自补:无障碍与可用性;汇总条与逐项红框同源,均由一次提交的校验结果推导",
"status": "open"
}
]
}
+12 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "ui-arch-registry-index/0.1",
"generatedAt": "2026-10-26T05:59:36.078Z",
"generatedAt": "2026-10-26T06:00:53.659Z",
"repoRoot": ".",
"packages": [
{
@@ -1754,6 +1754,17 @@
"n": "onReset",
"t": "() => void",
"d": "重置按钮点击回调;组件不自行清空字段,由调用方重置信号;不传 resetText 不渲染按钮"
},
{
"n": "onError",
"t": "(count: number) => void",
"k": 1,
"d": "校验不通过时的回调,参数为不通字段数(适合埋点或顶部提示)"
},
{
"n": "errorSummary",
"t": "boolean",
"d": "是否在表单顶部显示「有 N 项需要修改」汇总条;缺省 true,自带错误 UI 时传 false"
}
],
"example": "const name = signal(''); const f = form({ onSubmit: submit }, [formItem({ label: '用户名', required: true, value: name, rules: [{ min: 2, max: 12 }] }, textField({ value: name }))])",