iter(g344): 错误汇总条随字段校验实时重算
This commit is contained in:
@@ -1726,6 +1726,21 @@ function checkInvalidRing(pkgs) {
|
||||
return issues;
|
||||
}
|
||||
|
||||
/*** 校验汇总条实时性:条子只在提交时算一次,用户改好字段后「有 3 项需要修改」会一直骗人 ***/
|
||||
function checkFormSummary(pkgs) {
|
||||
const issues = [];
|
||||
for (const pkg of pkgs) {
|
||||
if (pkg.type !== 'skin-dom') continue;
|
||||
const formPath = path.join(ROOT, pkg.dir, 'src', 'form.ts');
|
||||
if (!fs.existsSync(formPath)) continue;
|
||||
const src = fs.readFileSync(formPath, 'utf8');
|
||||
if (!/dispatchEvent\(new CustomEvent\('ua:field-validated'\)\)/.test(src)) issues.push(`${pkg.name}/src/form.ts 的字段落笔没有通知:表单算不出实时错误数`);
|
||||
if (!/addEventListener\('ua:field-validated', refreshSummary\)/.test(src)) issues.push(`${pkg.name}/src/form.ts 没订阅字段校验事件:汇总条会停在提交那一刻的数字`);
|
||||
if (!/if \(quiet \|\| summary\.hidden\) return;/.test(src)) issues.push(`${pkg.name}/src/form.ts 的重算缺自激防护:validate → paint → 事件 → 再 validate 会无限递归`);
|
||||
}
|
||||
return issues;
|
||||
}
|
||||
|
||||
/*** 校验同义词表:目标 id 必须真实存在(改名后残留会让回退指到空气),同一个词不得归两组(歧义会让结果随表序漂移) ***/
|
||||
function checkSynonyms(ids) {
|
||||
const issues = [];
|
||||
@@ -1811,6 +1826,7 @@ function cmdVerify() {
|
||||
issues.push(...checkFormErrorLink(pkgs)); // 表单错误文案必须被控件关联
|
||||
issues.push(...checkFormReset(pkgs)); // 重置按钮必须真复位
|
||||
issues.push(...checkInvalidRing(pkgs)); // 错误环只该在聚焦时亮
|
||||
issues.push(...checkFormSummary(pkgs)); // 汇总条必须实时重算
|
||||
issues.push(...checkSynonyms(new Set(pkgs.flatMap((p) => (p.docs?.components ?? []).map((c) => c.id))))); // 同义词表指向的组件必须真实存在
|
||||
checkDarkTokens(issues);
|
||||
checkTokenParity(issues);
|
||||
|
||||
Reference in New Issue
Block a user