@agile-team/wl-skills-ui 1.8.16 → 1.8.17

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 CHANGED
@@ -4,6 +4,12 @@ All notable changes to **@agile-team/wl-skills-ui** will be documented in this f
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
+ ## [1.8.17] - 2026-07-15
8
+
9
+ ### Changed
10
+
11
+ - **操作列状态辨识**:全局化妆层把可用图标默认色改为柔和主题蓝 `--el-color-primary-light-2`,hover 继续使用原有蓝/绿/红语义色;原生禁用态统一浅灰且不响应 hover,选中行不再自动改变按钮语义色。业务页面无需改造,升级样式包即可生效。
12
+
7
13
  ## [1.8.16] - 2026-07-01
8
14
 
9
15
  ### Fixed
package/README.md CHANGED
@@ -213,7 +213,11 @@ yarn add @agile-team/wl-skills-ui
213
213
 
214
214
  ## 版本亮点
215
215
 
216
- 当前 v1.8.16:
216
+ 当前 v1.8.17:
217
+
218
+ - **操作列状态辨识**:可用图标默认使用柔和主题蓝,hover 保留蓝/绿/红语义色;禁用态统一浅灰且不响应 hover,选中行不再改变按钮语义色
219
+
220
+ 上一版 v1.8.16:
217
221
 
218
222
  - **label 冒号通杀(根治"就它带冒号")**:jh-* 组件的 `showColon` 默认 true,渲染冒号走 `.com-text` 但不带 `.has-colon`,旧规则(仅 `.has-colon` 限定)命不中。新增不限 `.has-colon` 的通杀规则,咔嚓所有 `.el-form-item__label` 内冒号伪元素
219
223
 
package/SKILL.md CHANGED
@@ -454,7 +454,7 @@ columnsDef(): TableColumnDesc<any>[] {
454
454
  |---|---|
455
455
  | 状态列彩色 Tag | `defineColumns` COLUMN_AUTO_MAP 自动配置 |
456
456
  | 操作列图标按钮 | `renderOps([...])` 统一渲染系统 |
457
- | 操作列条件显示 | `show: condition` 替代 `disabled: (row) => !condition` |
457
+ | 操作列条件显示 | `show: condition` 控制按钮显隐 |
458
458
  | 自动分隔线 | 图标组与文字组之间 `renderOps` 自动插入 |
459
459
  | 点击阻止冒泡 | `renderOps` 内部自动 `e.stopPropagation()` |
460
460
 
@@ -62,12 +62,12 @@ const columnsDef = [
62
62
 
63
63
  | type | 图标 | 标题 | 颜色 |
64
64
  |---|---|---|---|
65
- | `view` | Eye (View) | 查看 | 蓝色 |
66
- | `edit` | Edit | 编辑 | 绿色 |
67
- | `del` | Delete | 删除 | 红色 |
68
- | `log` | Document | 记录 | 灰色 |
69
- | `ok` | CircleCheck | 审核 | 绿色 |
70
- | `send` | Upload | 提交 | 蓝色 |
65
+ | `view` | Eye (View) | 查看 | 默认主题淡蓝,hover 蓝色 |
66
+ | `edit` | Edit | 编辑 | 默认主题淡蓝,hover 绿色 |
67
+ | `del` | Delete | 删除 | 默认主题淡蓝,hover 红色 |
68
+ | `log` | Document | 记录 | 默认主题淡蓝,hover 蓝色 |
69
+ | `ok` | CircleCheck | 审核 | 默认主题淡蓝,hover 绿色 |
70
+ | `send` | Upload | 提交 | 默认主题淡蓝,hover 蓝色 |
71
71
 
72
72
  ## 非预设操作(胶囊/文字)
73
73
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/wl-skills-ui",
3
- "version": "1.8.16",
3
+ "version": "1.8.17",
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",
@@ -382,7 +382,7 @@ export function renderRatingLevel(
382
382
 
383
383
  /**
384
384
  * 内置图标预设(type: 'view' | 'edit' | 'del')
385
- * 渲染为 26×26px 纯图标按钮,默认灰色,hover 变语义色
385
+ * 渲染为 26×26px 纯图标按钮,默认主题淡蓝,hover 变语义色
386
386
  */
387
387
  const ICON_PRESETS = {
388
388
  view: { icon: View, cls: "jh-op-view", title: "查看" },
@@ -429,7 +429,7 @@ export type OpItem = OpPreset | OpChip | OpLink;
429
429
  * 渲染操作列按钮组(三层系统)
430
430
  *
431
431
  * 第一层 — 纯图标按钮(type: 'view'|'edit'|'del'|'log'|'ok'|'send')
432
- * 26×26px,默认灰色,hover 变语义色,tooltip 兜底
432
+ * 26×26px,默认主题淡蓝,hover 变语义色,tooltip 兜底
433
433
  *
434
434
  * 第二层 — 胶囊按钮(type: 'chip')
435
435
  * 圆角胶囊,图标+文字,hover 淡蓝背景 + 主色文字
@@ -28,17 +28,25 @@
28
28
 
29
29
  ## 操作列按钮(表格行内)
30
30
 
31
- 使用 `jh-op-btn` 类,**禁止** `<el-button>` 在行内使用:
31
+ 统一使用 `renderOps` 图标按钮系统,**禁止** `<el-button>` 在行内使用:
32
32
 
33
- ```vue
34
- <!-- ❌ 错误 -->
35
- <el-button type="text" @click="handleEdit(row)">编辑</el-button>
36
-
37
- <!-- ✅ 正确 -->
38
- <span class="jh-op-btn primary" @click="handleEdit(row)">修改</span>
39
- <span class="jh-op-btn danger" @click="handleVoid(row)">作废</span>
33
+ ```typescript
34
+ // ✅ 正确
35
+ renderOps([
36
+ { type: 'edit', onClick: () => handleEdit(row) },
37
+ { type: 'del', onClick: () => handleVoid(row) },
38
+ ])
40
39
  ```
41
40
 
41
+ ### 视觉状态
42
+
43
+ | 状态 | 标准表现 |
44
+ |---|---|
45
+ | 默认可用 | 柔和主题蓝,透明背景 |
46
+ | hover | 查看/记录/提交变主题蓝,编辑/审核变绿,删除/作废变红 |
47
+ | 禁用 | 浅灰且 hover 不变色,使用原生 `disabled` |
48
+ | 选中行 | 保持默认主题蓝,不因选中自动变为语义色 |
49
+
42
50
  ### 按钮标签严格对应原型
43
51
 
44
52
  | 操作 | 正确标签 | 禁止替换为 |
@@ -47,15 +55,12 @@
47
55
  | 软删除 | **作废** | ~~删除~~ |
48
56
  | 硬删除 | **删除** | ~~移除~~ |
49
57
 
50
- ### 条件显示(不同状态不同按钮)
58
+ ### 条件显示
51
59
 
52
60
  ```typescript
53
- // ✅ renderOps 中用 show 控制
54
- renderOps(p, [
55
- { label: '修改', type: 'primary', show: (row) => row.status === 1 },
56
- { label: '作废', type: 'danger', show: (row) => row.status === 1 },
57
- { label: '编辑', type: 'primary', show: (row) => row.status === 0 },
58
- { label: '删除', type: 'danger', show: (row) => row.status === 0 },
61
+ renderOps([
62
+ { type: 'del', show: () => canDelete, onClick: () => handleDelete(row) },
63
+ { type: 'edit', show: () => canEdit, onClick: () => handleEdit(row) },
59
64
  ])
60
65
  ```
61
66
 
@@ -38,75 +38,72 @@
38
38
  outline: none;
39
39
  border: none;
40
40
  background: transparent;
41
+ color: var(--el-color-primary-light-2, #5178f6);
41
42
  transition: background-color 0.13s ease, color 0.13s ease;
42
43
  flex-shrink: 0;
43
44
 
44
45
  svg { width: 14px; height: 14px; }
45
- &:active {
46
- opacity: 0.6;
47
- }
46
+ &:active:not(:disabled) { opacity: 0.6; }
48
47
 
49
48
  // 查看 — hover 蓝
50
49
  &.jh-op-view {
51
- color: #C0C4CC;
52
- &:hover {
50
+ &:hover:not(:disabled) {
53
51
  color: var(--el-color-primary);
54
52
  background: rgba(34, 84, 244, 0.09);
55
53
  }
56
54
  }
57
55
  // 编辑 — hover 翠绿
58
56
  &.jh-op-edit {
59
- color: #C0C4CC;
60
- &:hover {
57
+ &:hover:not(:disabled) {
61
58
  color: var(--el-color-success);
62
59
  background: rgba(43, 178, 104, 0.09);
63
60
  }
64
61
  }
65
62
  // 删除/作废 — hover 红
66
63
  &.jh-op-del {
67
- color: #C0C4CC;
68
- &:hover {
64
+ &:hover:not(:disabled) {
69
65
  color: var(--el-color-danger);
70
66
  background: rgba(187, 45, 63, 0.09);
71
67
  }
72
68
  }
73
69
  // 记录 — hover 靛蓝
74
70
  &.jh-op-log {
75
- color: #C0C4CC;
76
- &:hover {
71
+ &:hover:not(:disabled) {
77
72
  color: var(--el-color-primary);
78
73
  background: rgba(34, 84, 244, 0.09);
79
74
  }
80
75
  }
81
76
  // 审核 — hover 翠绿
82
77
  &.jh-op-ok {
83
- color: #C0C4CC;
84
- &:hover {
78
+ &:hover:not(:disabled) {
85
79
  color: var(--el-color-success);
86
80
  background: rgba(43, 178, 104, 0.09);
87
81
  }
88
82
  }
89
83
  // 提交 — hover 主色
90
84
  &.jh-op-send {
91
- color: #C0C4CC;
92
- &:hover {
85
+ &:hover:not(:disabled) {
93
86
  color: var(--el-color-primary, #2254f4);
94
87
  background: rgba(34, 84, 244, 0.09);
95
88
  }
96
89
  }
97
90
  // 保存(内联表格用)— hover 翠绿
98
91
  &.jh-op-save {
99
- color: #C0C4CC;
100
- &:hover {
92
+ &:hover:not(:disabled) {
101
93
  color: var(--el-color-success);
102
94
  background: rgba(43, 178, 104, 0.09);
103
95
  }
104
- &:disabled { opacity: 0.45; cursor: not-allowed; }
105
96
  }
106
97
  // 取消(内联表格用)— hover 中灰
107
98
  &.jh-op-cancel {
108
- color: #C0C4CC;
109
- &:hover { color: #6B7280; background: rgba(107, 114, 128, 0.10); }
99
+ &:hover:not(:disabled) { color: #6B7280; background: rgba(107, 114, 128, 0.10); }
100
+ }
101
+
102
+ &:disabled {
103
+ color: var(--el-text-color-disabled, rgba(0, 0, 0, 0.25));
104
+ background: transparent;
105
+ opacity: 1;
106
+ cursor: not-allowed;
110
107
  }
111
108
  }
112
109
 
@@ -141,13 +138,17 @@
141
138
  flex-shrink: 0;
142
139
 
143
140
  svg { width: 12px; height: 12px; flex-shrink: 0; }
144
- &:hover {
141
+ &:hover:not(:disabled) {
145
142
  background: rgba(34, 84, 244, 0.10);
146
143
  color: var(--el-color-primary, #2254f4);
147
144
  }
148
- &:active {
149
- opacity: 0.65;
150
- }
145
+ &:active:not(:disabled) { opacity: 0.65; }
146
+ &:disabled {
147
+ color: var(--el-text-color-disabled, rgba(0, 0, 0, 0.25));
148
+ background: transparent;
149
+ opacity: 1;
150
+ cursor: not-allowed;
151
+ }
151
152
  }
152
153
 
153
154
  // ── 第三层:文字按钮(业务专属长名称)────────────────────────────────────────
@@ -172,11 +173,17 @@
172
173
  transition: background 0.13s, color 0.13s;
173
174
  flex-shrink: 0;
174
175
 
175
- &:hover {
176
+ &:hover:not(:disabled) {
176
177
  background: rgba(34, 84, 244, 0.08);
177
178
  color: var(--el-color-primary, #2254f4);
178
179
  }
179
- &:active { opacity: 0.55; }
180
+ &:active:not(:disabled) { opacity: 0.55; }
181
+ &:disabled {
182
+ color: var(--el-text-color-disabled, rgba(0, 0, 0, 0.25));
183
+ background: transparent;
184
+ opacity: 1;
185
+ cursor: not-allowed;
186
+ }
180
187
  }
181
188
 
182
189
  // ── 状态标签 — 精致小标签(GitHub/Linear label 风格)────────────────────────
@@ -337,20 +344,10 @@
337
344
 
338
345
  .ag-row-selected {
339
346
 
340
- .jh-op-btn,
341
- .jh-op-chip,
342
- .jh-op-link {
347
+ .jh-op-btn:not(:disabled),
348
+ .jh-op-chip:not(:disabled),
349
+ .jh-op-link:not(:disabled) {
343
350
  background-color: rgba(255, 255, 255, 0.65);
344
- color: var(--el-color-primary, #2254f4);
345
- }
346
-
347
- .jh-op-del {
348
- color: var(--el-color-danger, #f5222d);
349
- }
350
-
351
- .jh-op-edit,
352
- .jh-op-ok {
353
- color: var(--el-color-success, #2bb268);
354
351
  }
355
352
  }
356
353
  // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -238,7 +238,7 @@ views/[module]/style/index.scss ← 第4层:模块级布局补丁(仅
238
238
  | | 改造前 | 改造后 |
239
239
  |---|--------|--------|
240
240
  | **外观** | 文字按钮,占 120~200px | 图标按钮,占 80~100px |
241
- | **颜色** | 全蓝色链接 | 查看=蓝 hover,编辑=绿 hover,删除=红 hover |
241
+ | **颜色** | 全蓝色链接 | 默认主题淡蓝;查看=蓝 hover,编辑=绿 hover,删除=红 hover |
242
242
  | **条件显示** | 置灰仍占位 | `visibility:hidden` 对齐占位 |
243
243
  | **一致性** | 各页面标签混用 | 全局统一图标语义 |
244
244