@agile-team/wl-skills-ui 1.9.7 → 1.9.8
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 +9 -0
- package/README.md +5 -2
- package/docs/compat-matrix.md +2 -2
- package/package.json +1 -1
- package/skills/element/el-form/SKILL.md +12 -0
- package/standards/ui/02-button.md +15 -0
- package/standards/ui/03-form.md +25 -0
- package/styles/element/_form.scss +82 -9
- package/styles/element/_table.scss +1 -0
- package/styles/vendors/_ag-grid.scss +1 -0
- package/styles/vendors/_base-components.scss +21 -17
- package/styles/vendors/_base-query-toolbar.scss +115 -11
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@ 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.9.8] - 2026-07-29
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 统一紧凑业务表单 label、输入值、选择值、placeholder、textarea 与数字值为 12px,并继续豁免登录页和显式定制区域。
|
|
12
|
+
- 修复 textarea 聚焦后品牌色边框不清晰,以及数字输入框在不同 wrapper DOM、hover + focus 组合态下边框消失或双描边的问题。
|
|
13
|
+
- 补强原生 Element Table 与 AG Grid 长文本单行省略样式,继续由 R039 / `defineColumns()` 负责悬停完整提示与业务例外。
|
|
14
|
+
- 修复 BaseToolbar 分裂下拉按钮的箭头独立色块与菜单项内嵌按钮描边;规则仅命中 `action-button-wrap` 和 `action-dropdown-menu`,不影响普通按钮组与普通下拉菜单。
|
|
15
|
+
|
|
7
16
|
## [1.9.7] - 2026-07-28
|
|
8
17
|
|
|
9
18
|
### Added
|
package/README.md
CHANGED
|
@@ -200,7 +200,7 @@ yarn add @agile-team/wl-skills-ui
|
|
|
200
200
|
|---|---|---|
|
|
201
201
|
| `element-plus` | **`2.2.6-prod.3`** | 集团 jh- 定制版;EP 2.3.0 起引入 `.el-input__wrapper`,与 jh-ui 3.x 不兼容 |
|
|
202
202
|
| `@jhlc/jh-ui` | **`3.1.0`** | SCSS 皮肤包,`.com-text` label 包裹 + `.has-colon` 冒号注入(wl-skills-ui 已统一屏蔽表单冒号) |
|
|
203
|
-
| `@agile-team/wl-skills-ui` | `^1.9.
|
|
203
|
+
| `@agile-team/wl-skills-ui` | `^1.9.8` | 已对齐上述组合的 DOM 假设、客户主题锁、圆角契约与定制页样式边界 |
|
|
204
204
|
|
|
205
205
|
三种识别方式,任选其一:
|
|
206
206
|
|
|
@@ -214,10 +214,13 @@ yarn add @agile-team/wl-skills-ui
|
|
|
214
214
|
|
|
215
215
|
## 版本亮点
|
|
216
216
|
|
|
217
|
-
当前 v1.9.
|
|
217
|
+
当前 v1.9.8:
|
|
218
218
|
|
|
219
219
|
- **主操作按钮不再漏色**:新增/新建/添加/创建类按钮强制使用客户主题 `primary` 填充样式,扫描器可识别并自动修复漏写 `type` 或误带 `plain` 的存量代码。
|
|
220
220
|
- **长文本交互统一**:普通数据列在空间不足时单行省略,悬停显示完整内容;Tag、操作列、自定义渲染和主动换行列不被机械覆盖。
|
|
221
|
+
- **紧凑表单字号闭环**:业务表单 label、输入值、选择值、placeholder、textarea 与数字输入统一为 12px;登录页和显式定制区域继续保持项目自身设计。
|
|
222
|
+
- **输入边框状态闭环**:textarea 聚焦始终显示品牌色边框;数字输入兼容 Element Plus 新旧及混合 wrapper DOM,默认、hover、focus、错误、禁用态均只保留一层正确边框。
|
|
223
|
+
- **分裂操作保持一体**:BaseToolbar 的主动作与下拉箭头共用外轮廓和状态色,下拉菜单中的业务按钮扁平化为菜单项;规则精准限定在平台工具栏结构,不污染普通按钮组和普通下拉菜单。
|
|
221
224
|
- **Vite 4 运行时兼容**:浏览器 ESM 产物不再暴露可被开发转换误替换的 Node 环境变量成员链,预构建与直接加载均保持合法语法。
|
|
222
225
|
- **登录页精准退出**:内置识别 `.lp-root` 与 `.session-login`,其内部表单、按钮、焦点和校验态保留登录页自身设计;业务页面仍由包高权重统一管控。
|
|
223
226
|
- **通用定制页边界**:其他定制页在根节点增加 `.wl-ui-skin-exempt` 或 `data-wl-ui-skin="off"` 即可退出组件级强覆盖,不需要删除全局化妆包。
|
package/docs/compat-matrix.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| `element-plus` | **`2.2.6-prod.3`** | 集团 jh- 定制版,搭配 `@jhlc/jh-ui` 使用,DOM 仍为 `.el-input > .el-input__inner` 直挂结构(**EP 2.3.0 起才引入 `.el-input__wrapper`**) |
|
|
12
12
|
| `@jhlc/jh-ui` | **`3.1.0`** | SCSS 皮肤包,`.com-text` label 包裹、`.has-colon ::after` 冒号注入、`.el-form-item--default { margin-bottom: 24px }` 等强约束 |
|
|
13
13
|
| `@jhlc/common-core` | `3.1.0` 或 `3.1.0-prod.x` | 基础 util/types,`@jhlc/jh-ui` 间接依赖 |
|
|
14
|
-
| `@agile-team/wl-skills-ui` | `^1.9.
|
|
14
|
+
| `@agile-team/wl-skills-ui` | `^1.9.8` | 已对齐 jh-ui 3.1.0 + EP 2.2.6-prod.3 的 DOM 假设、客户主题锁、6px 基础圆角、紧凑表单、分裂按钮、长文本提示、定制页样式边界与 Vite 4 开发转换 |
|
|
15
15
|
|
|
16
16
|
## 项目集群当前实测
|
|
17
17
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
## 适配建议
|
|
37
37
|
|
|
38
|
-
- 集团内项目:**统一锚定 `element-plus@2.2.6-prod.3` + `@jhlc/jh-ui@3.1.0`**,与 wl-skills-ui v1.9.
|
|
38
|
+
- 集团内项目:**统一锚定 `element-plus@2.2.6-prod.3` + `@jhlc/jh-ui@3.1.0`**,与 wl-skills-ui v1.9.8 三方对齐。
|
|
39
39
|
- 升级 `element-plus` 到 2.3+ 前,必须同步升级 `@jhlc/jh-ui` 到对应支持版本,否则 `.com-text` / `.el-input__inner` DOM 与 EP `__wrapper` 体系不兼容。
|
|
40
40
|
- 新项目接入:见 README 「快速接入」章节,默认会按本表声明 peerDependency 范围。
|
|
41
41
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/wl-skills-ui",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.8",
|
|
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",
|
|
@@ -59,6 +59,18 @@ el-date-picker 默认宽度不会自动撑满 el-form-item,必须显式设置
|
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
+
## 表单字号与状态边框一致性 【中危】
|
|
63
|
+
|
|
64
|
+
- 紧凑业务表单的 label、输入值、选择值、picker、textarea、数字值和 placeholder
|
|
65
|
+
统一使用 `--wk-form-font-size: 12px`;不要在某一种组件上单独保留 13px/14px。
|
|
66
|
+
- textarea focus 必须是清晰的品牌色实线与轻外环,不能只改 `border-color` 或依赖
|
|
67
|
+
平台默认阴影。
|
|
68
|
+
- 数字输入框必须同时检查社区版“wrapper 子节点”和 jh-ui“wrapper 与
|
|
69
|
+
input-number 同节点”两种 DOM,并确保只存在一层可见边框。
|
|
70
|
+
- 登录页和显式定制页继续使用自身样式,不套用上述高权重规则。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
62
74
|
## 表单列数与输入宽度 【中危】
|
|
63
75
|
|
|
64
76
|
- 全宽业务表单默认 4 列,严禁使用 5~8 列把输入框压缩到无法阅读或填写。
|
|
@@ -49,6 +49,21 @@
|
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
52
|
+
## BaseToolbar 分裂下拉按钮
|
|
53
|
+
|
|
54
|
+
当一个工具栏动作同时包含主动作 `onClick` 与子动作 `children` 时,BaseToolbar
|
|
55
|
+
会生成 split-button。它在交互语义上仍是两个点击区域,但视觉上必须表现为一个
|
|
56
|
+
完整按钮:
|
|
57
|
+
|
|
58
|
+
- 主动作与箭头段共用同一背景色、hover/focus/active 状态和外轮廓。
|
|
59
|
+
- 箭头段不得拥有独立圆角、外边距、阴影或 Element Plus 默认分割线。
|
|
60
|
+
- `action-dropdown-menu` 中的 jh-button 必须扁平为菜单内容,边框和背景由
|
|
61
|
+
`el-dropdown-menu__item` 统一承担。
|
|
62
|
+
- 上述规则不得扩散到普通 `el-button-group`、普通 `el-dropdown-menu` 或页面
|
|
63
|
+
自定义编辑器工具栏。
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
52
67
|
## 操作列按钮(表格行内)
|
|
53
68
|
|
|
54
69
|
统一使用 `renderOps` 图标按钮系统,**禁止** `<el-button>` 在行内使用:
|
package/standards/ui/03-form.md
CHANGED
|
@@ -67,6 +67,31 @@ textarea 不强制 26px 高度,只继承统一圆角、字体和状态样式
|
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
70
|
+
## 规则:紧凑业务表单字号统一为 12px
|
|
71
|
+
|
|
72
|
+
页面正文仍使用 14px;业务表单的 label、输入值、选择值、picker、textarea、
|
|
73
|
+
数字输入框和 placeholder 统一使用:
|
|
74
|
+
|
|
75
|
+
```scss
|
|
76
|
+
--wk-form-font-size: 12px;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
该规则同时覆盖 Element Plus 2.2 直挂 input DOM、2.3+ wrapper DOM 与 jh-* 封装,
|
|
80
|
+
登录页及 `.wl-ui-skin-exempt` / `data-wl-ui-skin="off"` 定制页不参与覆盖。
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 规则:textarea 与数字输入框只保留一层状态边框
|
|
85
|
+
|
|
86
|
+
- textarea 默认使用中性 1px 边框,hover 使用 hover 边框色,focus 强制使用品牌色
|
|
87
|
+
1px 实线与轻外环,不能只依赖平台已有 box-shadow。
|
|
88
|
+
- 数字输入框兼容 `.el-input-number > .el-input__wrapper` 和
|
|
89
|
+
`.el-input-number.el-input__wrapper` 两种 DOM;由 wrapper 层绘制唯一边框,
|
|
90
|
+
内部 input 不得再画第二层边框。
|
|
91
|
+
- error / disabled 状态继续分别使用危险色和禁用色,不得被 focus 覆盖。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
70
95
|
## 规则:表单 label 不强制冒号
|
|
71
96
|
|
|
72
97
|
Element Plus 原生控件、picker 类控件和 jh-\* 封装控件的 label 后不强制追加 `:`。`@jhlc/jh-ui` 的 `.has-colon .com-text:after` / `.text-line-2:after` 冒号注入由 wl-skills-ui 统一屏蔽,避免 input / select / picker 之间出现有的带冒号、有的不带冒号。
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
html body {
|
|
6
6
|
--wk-form-control-radius: var(--el-border-radius-base, 6px);
|
|
7
7
|
--wk-form-control-height: 26px;
|
|
8
|
+
--wk-form-font-size: 12px !important;
|
|
8
9
|
--wk-form-label-control-gap: 16px;
|
|
9
10
|
--wk-form-label-line-height: 22px;
|
|
10
11
|
}
|
|
@@ -24,6 +25,31 @@ html body {
|
|
|
24
25
|
padding-right: var(--wk-form-label-control-gap) !important;
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
// ── 紧凑业务表单字号统一 ──────────────────────────────────────────────────
|
|
29
|
+
// 正文仍使用 14px;这里只治理表单 label、控件值与 placeholder。
|
|
30
|
+
&.el-form-item__label,
|
|
31
|
+
&.el-form-item__label > .com-text,
|
|
32
|
+
&.el-form-item__label .com-text,
|
|
33
|
+
&.el-form-item__label > .text-line-2,
|
|
34
|
+
&.el-form-item__label .text-line-2,
|
|
35
|
+
&.el-input__inner,
|
|
36
|
+
&.el-textarea__inner,
|
|
37
|
+
&.el-select__selected-item,
|
|
38
|
+
&.el-select__placeholder,
|
|
39
|
+
&.el-select__tags-text,
|
|
40
|
+
&.el-date-editor .el-range-input,
|
|
41
|
+
&.el-date-editor .el-range-separator,
|
|
42
|
+
&.el-radio__label,
|
|
43
|
+
&.el-checkbox__label {
|
|
44
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&.el-input__inner::placeholder,
|
|
48
|
+
&.el-textarea__inner::placeholder,
|
|
49
|
+
&.el-date-editor .el-range-input::placeholder {
|
|
50
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
27
53
|
&.el-input__wrapper,
|
|
28
54
|
&.el-select__wrapper,
|
|
29
55
|
&.el-select .el-select__wrapper,
|
|
@@ -47,9 +73,10 @@ html body {
|
|
|
47
73
|
line-height: calc(var(--wk-form-control-height) - 2px) !important;
|
|
48
74
|
}
|
|
49
75
|
|
|
50
|
-
// common-core
|
|
51
|
-
//
|
|
52
|
-
//
|
|
76
|
+
// common-core / jh-ui 有两种数字框 DOM:
|
|
77
|
+
// A. .el-input-number > .el-input > .el-input__wrapper(社区版)
|
|
78
|
+
// B. .el-input-number.el-input__wrapper > .el-input(jh 同节点 wrapper)
|
|
79
|
+
// 两种结构都只允许 wrapper 层绘制唯一可见边框。
|
|
53
80
|
&.el-input-number,
|
|
54
81
|
&.el-input-number:focus,
|
|
55
82
|
&.el-input-number:focus-within {
|
|
@@ -61,6 +88,11 @@ html body {
|
|
|
61
88
|
outline: none !important;
|
|
62
89
|
box-sizing: border-box !important;
|
|
63
90
|
background: transparent !important;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&.el-input-number:not(.el-input__wrapper),
|
|
94
|
+
&.el-input-number:not(.el-input__wrapper):focus,
|
|
95
|
+
&.el-input-number:not(.el-input__wrapper):focus-within {
|
|
64
96
|
box-shadow: none !important;
|
|
65
97
|
}
|
|
66
98
|
|
|
@@ -73,7 +105,8 @@ html body {
|
|
|
73
105
|
box-shadow: none !important;
|
|
74
106
|
}
|
|
75
107
|
|
|
76
|
-
&.el-input-number .el-input__wrapper
|
|
108
|
+
&.el-input-number .el-input__wrapper,
|
|
109
|
+
&.el-input-number.el-input__wrapper {
|
|
77
110
|
width: 100% !important;
|
|
78
111
|
height: 100% !important;
|
|
79
112
|
min-height: 0 !important;
|
|
@@ -86,23 +119,35 @@ html body {
|
|
|
86
119
|
transition: box-shadow 0.15s ease !important;
|
|
87
120
|
}
|
|
88
121
|
|
|
89
|
-
&.el-input-number:not(.is-disabled):hover .el-input__wrapper
|
|
122
|
+
&.el-input-number:not(.is-disabled):hover .el-input__wrapper,
|
|
123
|
+
&.el-input-number.el-input__wrapper:not(.is-disabled):hover {
|
|
90
124
|
box-shadow:
|
|
91
125
|
0 0 0 1px var(--el-border-color-hover, #c0c4cc) inset !important;
|
|
92
126
|
}
|
|
93
127
|
|
|
94
|
-
&.el-input-number .el-input__wrapper.is-focus,
|
|
95
|
-
&.el-input-number:focus-within .el-input__wrapper
|
|
128
|
+
&.el-input-number:not(.is-disabled) .el-input__wrapper.is-focus,
|
|
129
|
+
&.el-input-number:not(.is-disabled):focus-within .el-input__wrapper,
|
|
130
|
+
&.el-input-number.el-input__wrapper:not(.is-disabled).is-focus,
|
|
131
|
+
&.el-input-number.el-input__wrapper:not(.is-disabled):focus,
|
|
132
|
+
&.el-input-number.el-input__wrapper:not(.is-disabled):focus-within {
|
|
96
133
|
box-shadow:
|
|
97
134
|
0 0 0 1.5px var(--el-color-primary, #002a8f) inset !important;
|
|
98
135
|
}
|
|
99
136
|
|
|
100
|
-
&.el-input-number.is-disabled .el-input__wrapper
|
|
137
|
+
&.el-input-number.is-disabled .el-input__wrapper,
|
|
138
|
+
&.el-input-number.el-input__wrapper.is-disabled {
|
|
101
139
|
background: var(--el-disabled-bg-color, #f5f7fa) !important;
|
|
102
140
|
box-shadow:
|
|
103
141
|
0 0 0 1px var(--el-disabled-border-color, #e4e7ed) inset !important;
|
|
104
142
|
}
|
|
105
143
|
|
|
144
|
+
// 极少数过渡版本会同时输出“同节点 wrapper + 子 wrapper”;
|
|
145
|
+
// 此时由外层绘制边框,明确清掉内层,防止双描边。
|
|
146
|
+
&.el-input-number.el-input__wrapper > .el-input > .el-input__wrapper {
|
|
147
|
+
background: transparent !important;
|
|
148
|
+
box-shadow: none !important;
|
|
149
|
+
}
|
|
150
|
+
|
|
106
151
|
&.el-input-number .el-input__inner,
|
|
107
152
|
&.el-input-number .el-input__inner:focus,
|
|
108
153
|
&.el-input-number .el-input__inner:focus-visible {
|
|
@@ -139,7 +184,35 @@ html body {
|
|
|
139
184
|
-moz-appearance: textfield !important;
|
|
140
185
|
}
|
|
141
186
|
|
|
142
|
-
|
|
187
|
+
// ── textarea 默认 / hover / focus ─────────────────────────────────────────
|
|
188
|
+
// focus 使用“品牌色实线 + 轻外环”,不依赖平台原有 border-width/box-shadow。
|
|
189
|
+
&.el-textarea > .el-textarea__inner,
|
|
190
|
+
&.com-input > .el-textarea > .el-textarea__inner,
|
|
191
|
+
&.com-textarea > .el-textarea > .el-textarea__inner {
|
|
192
|
+
border: 1px solid var(--el-border-color, #dcdfe6) !important;
|
|
143
193
|
border-radius: var(--wk-form-control-radius) !important;
|
|
194
|
+
box-shadow: none !important;
|
|
195
|
+
transition:
|
|
196
|
+
border-color 0.15s ease,
|
|
197
|
+
box-shadow 0.15s ease !important;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
&.el-textarea:not(.is-disabled) > .el-textarea__inner:hover:not(:focus),
|
|
201
|
+
&.com-input > .el-textarea:not(.is-disabled) > .el-textarea__inner:hover:not(:focus),
|
|
202
|
+
&.com-textarea > .el-textarea:not(.is-disabled) > .el-textarea__inner:hover:not(:focus) {
|
|
203
|
+
border-color: var(--el-border-color-hover, #c0c4cc) !important;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
&.el-textarea.is-focus > .el-textarea__inner,
|
|
207
|
+
&.el-textarea > .el-textarea__inner:focus,
|
|
208
|
+
&.el-textarea > .el-textarea__inner:focus-visible,
|
|
209
|
+
&.com-input > .el-textarea.is-focus > .el-textarea__inner,
|
|
210
|
+
&.com-input > .el-textarea > .el-textarea__inner:focus,
|
|
211
|
+
&.com-textarea > .el-textarea.is-focus > .el-textarea__inner,
|
|
212
|
+
&.com-textarea > .el-textarea > .el-textarea__inner:focus {
|
|
213
|
+
border: 1px solid var(--el-color-primary, #002a8f) !important;
|
|
214
|
+
outline: none !important;
|
|
215
|
+
box-shadow:
|
|
216
|
+
0 0 0 2px rgba(var(--el-color-primary-rgb, 0, 42, 143), 0.12) !important;
|
|
144
217
|
}
|
|
145
218
|
}
|
|
@@ -453,20 +453,11 @@
|
|
|
453
453
|
&.el-textarea {
|
|
454
454
|
.el-textarea__inner {
|
|
455
455
|
border-radius: 6px !important;
|
|
456
|
-
font-size:
|
|
456
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
457
457
|
line-height: 1.65 !important;
|
|
458
458
|
padding: 7px 10px !important;
|
|
459
459
|
resize: vertical !important; // 只允许垂直拉伸,不允许水平
|
|
460
460
|
transition: border-color 0.15s, box-shadow 0.15s;
|
|
461
|
-
|
|
462
|
-
&:hover:not(:focus) {
|
|
463
|
-
border-color: var(--el-border-color-hover, #c0c4cc) !important;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
&:focus {
|
|
467
|
-
border-color: var(--el-color-primary) !important;
|
|
468
|
-
box-shadow: 0 0 0 2px rgba(var(--el-color-primary-rgb), 0.12) !important;
|
|
469
|
-
}
|
|
470
461
|
}
|
|
471
462
|
|
|
472
463
|
// 字数统计:更小、更淡、不遮挡内容
|
|
@@ -495,8 +486,7 @@
|
|
|
495
486
|
&.el-select__wrapper.is-focused,
|
|
496
487
|
&.el-select__wrapper:focus-within,
|
|
497
488
|
&.el-date-editor.el-input__wrapper.is-focus,
|
|
498
|
-
&.el-date-editor.el-input__wrapper:focus-within
|
|
499
|
-
&.el-textarea__inner:focus {
|
|
489
|
+
&.el-date-editor.el-input__wrapper:focus-within {
|
|
500
490
|
box-shadow: 0 0 0 1.5px var(--el-color-primary, #002a8f) inset !important;
|
|
501
491
|
}
|
|
502
492
|
|
|
@@ -514,13 +504,13 @@
|
|
|
514
504
|
&.el-form.el-form--label-left .el-form-item__label,
|
|
515
505
|
&.el-form.el-form--label-right .el-form-item__label {
|
|
516
506
|
align-items: baseline !important;
|
|
517
|
-
font-size: 12px !important;
|
|
507
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
518
508
|
line-height: var(--wk-form-label-line-height, 22px) !important;
|
|
519
509
|
}
|
|
520
510
|
|
|
521
511
|
&.el-form.el-form--label-left .el-form-item__label > .com-text,
|
|
522
512
|
&.el-form.el-form--label-right .el-form-item__label > .com-text {
|
|
523
|
-
font-size: 12px !important;
|
|
513
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
524
514
|
line-height: var(--wk-form-label-line-height, 22px) !important;
|
|
525
515
|
}
|
|
526
516
|
|
|
@@ -529,7 +519,7 @@
|
|
|
529
519
|
&.el-form.el-form--label-right .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before {
|
|
530
520
|
content: "*" !important;
|
|
531
521
|
color: var(--el-color-danger, #f56c6c) !important;
|
|
532
|
-
font-size: 12px !important;
|
|
522
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
533
523
|
font-weight: 400 !important;
|
|
534
524
|
line-height: var(--wk-form-label-line-height, 22px) !important;
|
|
535
525
|
display: inline-block !important;
|
|
@@ -545,7 +535,7 @@
|
|
|
545
535
|
&.el-form.el-form--label-right .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label > .com-text::before {
|
|
546
536
|
content: "*" !important;
|
|
547
537
|
color: var(--el-color-danger, #f56c6c) !important;
|
|
548
|
-
font-size: 12px !important;
|
|
538
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
549
539
|
font-weight: 400 !important;
|
|
550
540
|
line-height: var(--wk-form-label-line-height, 22px) !important;
|
|
551
541
|
display: inline-block !important;
|
|
@@ -572,7 +562,7 @@
|
|
|
572
562
|
&.el-form.el-form--label-right .el-form-item.is-required:not(.is-no-asterisk).asterisk-right > .el-form-item__label::after {
|
|
573
563
|
content: "*" !important;
|
|
574
564
|
color: var(--el-color-danger, #f56c6c) !important;
|
|
575
|
-
font-size: 12px !important;
|
|
565
|
+
font-size: var(--wk-form-font-size, 12px) !important;
|
|
576
566
|
font-weight: 400 !important;
|
|
577
567
|
line-height: var(--wk-form-label-line-height, 22px) !important;
|
|
578
568
|
display: inline-block !important;
|
|
@@ -606,6 +596,20 @@
|
|
|
606
596
|
.el-textarea__inner {
|
|
607
597
|
box-shadow: 0 0 0 1px var(--el-color-danger, #f56c6c) inset !important;
|
|
608
598
|
}
|
|
599
|
+
|
|
600
|
+
// InputNumber 的 focus 兼容规则权重较高;非禁用 error 必须最终覆盖 focus。
|
|
601
|
+
.el-input-number:not(.is-disabled) .el-input__wrapper,
|
|
602
|
+
.el-input-number.el-input__wrapper:not(.is-disabled) {
|
|
603
|
+
box-shadow:
|
|
604
|
+
0 0 0 1px var(--el-color-danger, #f56c6c) inset !important;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
// 过渡版双 wrapper 由外层表达 error,内层不得出现第二道危险色边框。
|
|
608
|
+
.el-input-number.el-input__wrapper:not(.is-disabled)
|
|
609
|
+
> .el-input
|
|
610
|
+
> .el-input__wrapper {
|
|
611
|
+
box-shadow: none !important;
|
|
612
|
+
}
|
|
609
613
|
}
|
|
610
614
|
}
|
|
611
615
|
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
cursor: not-allowed !important;
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
// ──
|
|
357
|
+
// ── 工具栏下拉 / 分裂按钮 ──────────────────────────────────────────────────
|
|
358
358
|
.base-toolbar-box .el-dropdown > .el-button,
|
|
359
359
|
.base-toolbar-box .el-button-group .el-button {
|
|
360
360
|
height: 24px !important;
|
|
@@ -363,25 +363,68 @@
|
|
|
363
363
|
font-weight: 500;
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
|
|
366
|
+
// BaseToolbar 仅在“主动作有 onClick 且还有 children”时生成 split-button。
|
|
367
|
+
// 精确限定 action-button-wrap,避免影响页面自行编排的普通 el-button-group。
|
|
368
|
+
.base-toolbar-box
|
|
369
|
+
.action-button-wrap
|
|
370
|
+
> .el-dropdown
|
|
371
|
+
> .el-button-group {
|
|
367
372
|
display: inline-flex !important;
|
|
368
373
|
align-items: center !important;
|
|
369
374
|
vertical-align: middle !important;
|
|
375
|
+
gap: 0 !important;
|
|
376
|
+
overflow: hidden;
|
|
377
|
+
border-radius: var(--el-border-radius-base) !important;
|
|
370
378
|
|
|
371
|
-
.el-button {
|
|
379
|
+
> .el-button {
|
|
372
380
|
border-radius: 0 !important;
|
|
373
381
|
margin: 0 !important;
|
|
382
|
+
box-shadow: none !important;
|
|
374
383
|
}
|
|
375
384
|
|
|
376
|
-
.el-button:first-child {
|
|
385
|
+
> .el-button:first-child {
|
|
377
386
|
border-top-left-radius: var(--el-border-radius-base) !important;
|
|
378
387
|
border-bottom-left-radius: var(--el-border-radius-base) !important;
|
|
388
|
+
border-top-right-radius: 0 !important;
|
|
389
|
+
border-bottom-right-radius: 0 !important;
|
|
390
|
+
border-right-color: transparent !important;
|
|
379
391
|
}
|
|
380
392
|
|
|
381
|
-
.el-button
|
|
393
|
+
> .el-button.el-dropdown__caret-button {
|
|
394
|
+
width: 24px !important;
|
|
395
|
+
min-width: 24px !important;
|
|
396
|
+
padding: 0 !important;
|
|
397
|
+
margin-left: 0 !important;
|
|
398
|
+
border-left: 0 !important;
|
|
399
|
+
border-top-left-radius: 0 !important;
|
|
400
|
+
border-bottom-left-radius: 0 !important;
|
|
382
401
|
border-top-right-radius: var(--el-border-radius-base) !important;
|
|
383
402
|
border-bottom-right-radius: var(--el-border-radius-base) !important;
|
|
384
|
-
|
|
403
|
+
|
|
404
|
+
// Element Plus 默认用 ::before 画分割线,会让箭头看起来像独立色块。
|
|
405
|
+
&::before {
|
|
406
|
+
display: none !important;
|
|
407
|
+
content: none !important;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// 鼠标或键盘进入任一分段时,两段同步使用同一状态色,视觉保持一个按钮。
|
|
412
|
+
&:hover > .el-button:not(.is-disabled):not([disabled]),
|
|
413
|
+
&:focus-within > .el-button:not(.is-disabled):not([disabled]) {
|
|
414
|
+
color: var(--el-button-hover-text-color) !important;
|
|
415
|
+
border-color: var(--el-button-hover-border-color) !important;
|
|
416
|
+
background-color: var(--el-button-hover-bg-color) !important;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
&:hover > .el-button:first-child:not(.is-disabled):not([disabled]),
|
|
420
|
+
&:focus-within > .el-button:first-child:not(.is-disabled):not([disabled]) {
|
|
421
|
+
border-right-color: transparent !important;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
&:active > .el-button:not(.is-disabled):not([disabled]) {
|
|
425
|
+
color: var(--el-button-active-text-color, #ffffff) !important;
|
|
426
|
+
border-color: var(--el-button-active-border-color) !important;
|
|
427
|
+
background-color: var(--el-button-active-bg-color) !important;
|
|
385
428
|
}
|
|
386
429
|
}
|
|
387
430
|
|
|
@@ -393,23 +436,84 @@
|
|
|
393
436
|
margin: 0 !important;
|
|
394
437
|
}
|
|
395
438
|
|
|
396
|
-
|
|
439
|
+
// BaseToolbar V1 会在 action-dropdown-menu 的 item 内再渲染一个 jh-button。
|
|
440
|
+
// 只扁平化这个已知结构,不影响普通 el-dropdown 和业务自定义下拉。
|
|
441
|
+
html body .el-dropdown-menu.action-dropdown-menu .el-dropdown-menu__item {
|
|
397
442
|
display: flex;
|
|
398
443
|
align-items: center;
|
|
399
444
|
gap: 6px;
|
|
400
445
|
min-height: 28px;
|
|
401
446
|
line-height: 1.3;
|
|
447
|
+
padding: 0 !important;
|
|
402
448
|
color: var(--el-text-color-regular, #606266);
|
|
403
449
|
}
|
|
404
450
|
|
|
405
|
-
|
|
406
|
-
|
|
451
|
+
html
|
|
452
|
+
body
|
|
453
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
454
|
+
.el-dropdown-menu__item
|
|
455
|
+
> .el-button {
|
|
456
|
+
width: 100% !important;
|
|
457
|
+
height: 28px !important;
|
|
458
|
+
min-height: 28px !important;
|
|
459
|
+
justify-content: flex-start !important;
|
|
460
|
+
margin: 0 !important;
|
|
461
|
+
padding: 0 10px !important;
|
|
462
|
+
border: 0 !important;
|
|
463
|
+
border-radius: inherit !important;
|
|
464
|
+
color: inherit !important;
|
|
465
|
+
background: transparent !important;
|
|
466
|
+
box-shadow: none !important;
|
|
467
|
+
font-size: 12px !important;
|
|
468
|
+
font-weight: 400 !important;
|
|
469
|
+
line-height: 1.3 !important;
|
|
470
|
+
transform: none !important;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
html
|
|
474
|
+
body
|
|
475
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
476
|
+
.el-dropdown-menu__item
|
|
477
|
+
> .el-button:hover,
|
|
478
|
+
html
|
|
479
|
+
body
|
|
480
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
481
|
+
.el-dropdown-menu__item
|
|
482
|
+
> .el-button:focus,
|
|
483
|
+
html
|
|
484
|
+
body
|
|
485
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
486
|
+
.el-dropdown-menu__item
|
|
487
|
+
> .el-button:active {
|
|
488
|
+
color: inherit !important;
|
|
489
|
+
border: 0 !important;
|
|
490
|
+
background: transparent !important;
|
|
491
|
+
box-shadow: none !important;
|
|
492
|
+
transform: none !important;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
html
|
|
496
|
+
body
|
|
497
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
498
|
+
.el-dropdown-menu__item:not(.is-disabled):hover,
|
|
499
|
+
html
|
|
500
|
+
body
|
|
501
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
502
|
+
.el-dropdown-menu__item:not(.is-disabled):focus {
|
|
407
503
|
color: var(--el-color-primary, #002a8f) !important;
|
|
408
504
|
background-color: rgba(var(--el-color-primary-rgb), 0.08) !important;
|
|
409
505
|
}
|
|
410
506
|
|
|
411
|
-
|
|
412
|
-
|
|
507
|
+
html
|
|
508
|
+
body
|
|
509
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
510
|
+
.el-dropdown-menu__item
|
|
511
|
+
.el-icon,
|
|
512
|
+
html
|
|
513
|
+
body
|
|
514
|
+
.el-dropdown-menu.action-dropdown-menu
|
|
515
|
+
.el-dropdown-menu__item
|
|
516
|
+
svg {
|
|
413
517
|
color: currentColor !important;
|
|
414
518
|
fill: currentColor;
|
|
415
519
|
flex: 0 0 auto;
|