@agile-team/wl-skills-ui 1.13.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +3 -2
- package/docs/version-history.md +5 -0
- package/package.json +1 -1
- package/scanner/rules/form.mjs +10 -9
- package/skills/element/el-form/SKILL.md +4 -3
- package/standards/rules.json +4 -4
- package/standards/ui/03-form.md +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.13.1] - 2026-09-30
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- R008 不再漏检 `BaseForm` / `BaseQuery` 的 `label-width`:覆盖原生与封装表单的静态宽度写法,仍为 `info` 且不自动修改;动态宽度及无关节点不误报。
|
|
14
|
+
|
|
15
|
+
### Docs
|
|
16
|
+
|
|
17
|
+
- 明确 150px 只是预警下限。长标签须测量实际文本并与列数、至少 160px 的输入区共同核对;禁止为解决局部截断而全局取消 jh/Base 标签省略。补充宽/窄屏浏览器几何验收。
|
|
18
|
+
|
|
9
19
|
## [1.13.0] - 2026-09-30
|
|
10
20
|
|
|
11
21
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agile-team/wl-skills-ui
|
|
2
2
|
|
|
3
|
-
**企业级 UI 一致性与 AI 精确治理工具包 v1.13.
|
|
3
|
+
**企业级 UI 一致性与 AI 精确治理工具包 v1.13.1** — 面向 Vue 3 + Element Plus 的设计令牌、能力 Profile、样式皮肤、页面骨架、运行时能力、静态扫描、确定性修复、AI Skill、MCP 与脱敏 UI 模板契约。
|
|
4
4
|
|
|
5
5
|
它把“视觉统一、问题识别、机械修复、项目适配和样例沉淀”拆成可验证、可组合的工程能力。脚本、规则和 MCP 先完成确定性工作,AI 只处理业务语义与人工决策,从而减少重复读源码、上下文 token 和误修改。
|
|
6
6
|
|
|
@@ -136,6 +136,7 @@ Vendor 覆盖顺序是:`Base* > jh-* > C_*/c_* > AG Grid > custom wrappers`。
|
|
|
136
136
|
- `defineColumns()` 默认补齐叶子列和表头居中,并合并业务已有 `cellStyle/cellClass/headerClass`;传 `defaultAlign: null` 可退出。
|
|
137
137
|
- 普通按钮默认要求 `size="small"` 且带语义图标;已声明动态尺寸、link/text 或操作列图标按钮不会被误改。
|
|
138
138
|
- 表单输入、Select、Date/Time Picker 默认 small,日期时间输入根使用 `style="width:100%"`。
|
|
139
|
+
- 长标签布局按实际文本、字体和容器宽度确定:R008 对 `el-form`、`BaseForm`、`BaseQuery` 的静态 `labelWidth` / `label-width` 小于 150px 给出人工复核提示;150px 不是统一修复值。加宽标签时同步保证输入区至少 160px,必要时减少列数;不全局取消 jh/Base 标签省略。详见[表单规范](standards/ui/03-form.md)。
|
|
139
140
|
- 原生 `el-date-picker` / `el-time-picker` 的面板通过 Teleport 渲染,面板同样带 `.el-date-picker` 类。包内 `_picker.scss`、R042 与浏览器契约共同阻止裸几何样式把弹层放大为全屏;输入宽度只作用于 `.el-date-editor` 或组件 style,弹层规则必须从 `.el-picker__popper` 限定。
|
|
140
141
|
|
|
141
142
|
```ts
|
|
@@ -472,7 +473,7 @@ npx wl-ui doctor --project . --print-overrides
|
|
|
472
473
|
|
|
473
474
|
## 版本与进一步阅读
|
|
474
475
|
|
|
475
|
-
当前 v1.13.0:新增 `native-jh-ag` 混合形态 Profile
|
|
476
|
+
当前 v1.13.1:R008 覆盖 jh/Base 表单静态标签宽度,补充长标签与输入区的布局预算和浏览器验收口径,保持只提示、不自动改样式。v1.13.0:新增 `native-jh-ag` 混合形态 Profile、显式 Profile 兼容承诺与联邦 AG 依赖识别。v1.12.0:显式 UI Profile、规则/修复器一致性门禁、共享 CLI/MCP 扫描引擎与 dry-run 计划哈希。
|
|
476
477
|
|
|
477
478
|
- [版本摘要](docs/version-history.md)
|
|
478
479
|
- [完整 Changelog](CHANGELOG.md)
|
package/docs/version-history.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
本页保留面向使用者的版本能力摘要;逐提交级变更、修复细节和旧版本记录见根目录 [`CHANGELOG.md`](../CHANGELOG.md)。
|
|
4
4
|
|
|
5
|
+
## v1.13.1 — 长标签表单布局治理
|
|
6
|
+
|
|
7
|
+
- R008 扩展至 `BaseForm` / `BaseQuery` 的静态标签宽度写法,避免封装表单漏检;仍仅提示人工复核。
|
|
8
|
+
- 文档明确按最长标签和列宽预算调整局部表单,保障输入区至少 160px;宽/窄屏检查标签未截断且字段不重叠,不做全局样式覆盖。
|
|
9
|
+
|
|
5
10
|
## v1.13.0 — native-jh-ag 混合形态与兼容承诺
|
|
6
11
|
|
|
7
12
|
- 新增 `native-jh-ag` Profile:平台子应用终态形态(native 运行时 + jh/Base/C 封装 + 联邦或 npm AG Grid)。样式入口 `styles/presets/full`,包根 `styles` 全量写法等价认可;runtime guard 与 `legacy-jh-ag` 同集(分屏 resize + AG 空态),`runtime/auto` 作为等价 runtime 引用被 I003 接受——存量项目声明后零代码改动通过严格校验。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/wl-skills-ui",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.1",
|
|
4
4
|
"description": "企业级 UI 风格对齐框架 — Vue + Element Plus 项目通用化妆/原生双模式(tokens / element / vendors / layouts / runtime / scanner / fixer / skills)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./es/index.js",
|
package/scanner/rules/form.mjs
CHANGED
|
@@ -121,29 +121,30 @@ export const formRules = [
|
|
|
121
121
|
},
|
|
122
122
|
},
|
|
123
123
|
|
|
124
|
-
// R008:
|
|
124
|
+
// R008: 静态标签宽度小于基础阈值;长标签仍需按实际文本测量。
|
|
125
125
|
{
|
|
126
126
|
id: "R008",
|
|
127
127
|
category: "form",
|
|
128
128
|
severity: "info",
|
|
129
|
-
name: "
|
|
129
|
+
name: "表单静态标签宽度偏小(< 150px)",
|
|
130
130
|
check(template, file, lineOffset) {
|
|
131
131
|
const issues = [];
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
for (const tagName of ["el-form", "BaseForm", "base-form", "BaseQuery", "base-query"]) {
|
|
133
|
+
for (const tag of findTags(template, tagName)) {
|
|
134
|
+
const match = tag.text.match(/(?:^|\s)(?:label-width|labelWidth)\s*=\s*["'](\d+)px["']/);
|
|
135
|
+
if (!match || Number(match[1]) >= 150) continue;
|
|
136
136
|
issues.push(
|
|
137
137
|
issue(
|
|
138
138
|
file,
|
|
139
|
-
lineOf(template,
|
|
139
|
+
lineOf(template, tag.index, lineOffset),
|
|
140
140
|
"R008",
|
|
141
141
|
"form",
|
|
142
142
|
"info",
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
`${tagName} 标签宽度 ${match[1]}px 偏小,长标签可能被截断`,
|
|
144
|
+
"量取最长实际标签并核对控件宽度;必要时增加标签宽度、减少列数(需人工确认)",
|
|
145
145
|
),
|
|
146
146
|
);
|
|
147
|
+
}
|
|
147
148
|
}
|
|
148
149
|
return issues;
|
|
149
150
|
},
|
|
@@ -34,15 +34,16 @@ el-date-picker 默认宽度不会自动撑满 el-form-item,必须显式设置
|
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
## R008 —
|
|
37
|
+
## R008 — 表单静态标签宽度预警 【低危】
|
|
38
38
|
|
|
39
39
|
```diff
|
|
40
40
|
- <el-form :model="form" labelWidth="100px">
|
|
41
41
|
+ <el-form :model="form" labelWidth="150px">
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
>
|
|
45
|
-
>
|
|
44
|
+
> 扫描覆盖 `el-form`、`BaseForm`、`BaseQuery` 的静态 `labelWidth` / `label-width`;150px 只是预警下限,不是所有表单的最终宽度。`jh-ui` 的 `.com-text` 可能强制单行省略,因此长标签(含单位、中英文混排)需按实际字体测量。
|
|
45
|
+
> 修复时先量最长标签,再同时检查列宽预算:每列至少容纳标签、间距和 160px 可输入区;不足时降低列数并设置响应式断点。只作用于受影响表单,不全局取消省略或强迫所有页面使用同一个宽度。tooltip 不能代替标签可见。该规则**仅提示人工确认**,不自动修改。
|
|
46
|
+
> 浏览器验收至少核对宽屏和窄屏:标签 `scrollWidth <= clientWidth`、输入区 ≥160px、相邻字段不重叠;若业务允许单列移动布局,可在更窄视口单独验收。
|
|
46
47
|
|
|
47
48
|
---
|
|
48
49
|
|
package/standards/rules.json
CHANGED
|
@@ -186,11 +186,11 @@
|
|
|
186
186
|
"id": "R008",
|
|
187
187
|
"category": "form",
|
|
188
188
|
"severity": "info",
|
|
189
|
-
"title": "
|
|
190
|
-
"rationale": "
|
|
191
|
-
"appliesTo": ["el-form"],
|
|
189
|
+
"title": "表单静态标签宽度偏小(< 150px)",
|
|
190
|
+
"rationale": "150px 只是通用预警下限;长标签及单位文本须按实际渲染宽度核对,且不能挤压输入控件。",
|
|
191
|
+
"appliesTo": ["el-form", "BaseForm", "BaseQuery"],
|
|
192
192
|
"autoFixable": false,
|
|
193
|
-
"manualReason": "
|
|
193
|
+
"manualReason": "需要结合最长标签、字体、容器宽度和列数判断;不得机械扩大标签或全局覆盖截断样式。",
|
|
194
194
|
"scanner": "scanner/rules/form.mjs",
|
|
195
195
|
"skills": ["element/el-form"]
|
|
196
196
|
},
|
package/standards/ui/03-form.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# 规范 03:表单(el-form)
|
|
2
2
|
|
|
3
|
-
## 规则 R008
|
|
3
|
+
## 规则 R008:标签宽度按内容和列宽预算确定
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`150px` 是静态扫描预警下限,不是固定模板宽度。对 `el-form`、`BaseForm`、`BaseQuery`,应以最长实际标签(包括单位、中英文混排)及当前字体测量所需宽度;jh/Base 封装可能将标签强制单行省略。
|
|
6
|
+
|
|
7
|
+
每列需同时容纳标签、间距和至少 `160px` 的输入区。放宽标签后若输入区不足,应先减少列数或设置响应式断点,而不是全局覆盖 `.com-text` 或压缩输入框。只在受影响的表单内调整;tooltip 仅作补充。浏览器回归检查宽/窄屏的标签 `scrollWidth <= clientWidth`、输入区宽度及无交叠。
|
|
6
8
|
|
|
7
9
|
```vue
|
|
8
10
|
<!-- ❌ 错误:100px 会截断9字标签 -->
|