@agile-team/wl-skills-ui 1.9.5 → 1.9.6

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,13 @@ 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.6] - 2026-07-23
8
+
9
+ ### Fixed
10
+
11
+ - 数值输入框统一由 Element Plus wrapper 绘制唯一边框,隐藏 common-core 残留步进按钮及浏览器原生数字步进器,保留 `type=number` 语义并修复焦点双边框、内容压盖和输入后边框消失。
12
+ - 固定 AG Grid 空数据插图与文案的紧凑尺寸并轻微下移视觉中心,避免不同表格高度导致空态大小不一或位置偏上。
13
+
7
14
  ## [1.9.5] - 2026-07-23
8
15
 
9
16
  ### Fixed
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.5` | 已对齐上述组合的 DOM 假设、客户主题锁、圆角契约与定制页样式边界 |
203
+ | `@agile-team/wl-skills-ui` | `^1.9.6` | 已对齐上述组合的 DOM 假设、客户主题锁、圆角契约与定制页样式边界 |
204
204
 
205
205
  三种识别方式,任选其一:
206
206
 
@@ -214,7 +214,7 @@ yarn add @agile-team/wl-skills-ui
214
214
 
215
215
  ## 版本亮点
216
216
 
217
- 当前 v1.9.5
217
+ 当前 v1.9.6
218
218
 
219
219
  - **Vite 4 运行时兼容**:浏览器 ESM 产物不再暴露可被开发转换误替换的 Node 环境变量成员链,预构建与直接加载均保持合法语法。
220
220
  - **登录页精准退出**:内置识别 `.lp-root` 与 `.session-login`,其内部表单、按钮、焦点和校验态保留登录页自身设计;业务页面仍由包高权重统一管控。
@@ -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.5` | 已对齐 jh-ui 3.1.0 + EP 2.2.6-prod.3 的 DOM 假设、客户主题锁、6px 基础圆角、定制页样式边界与 Vite 4 开发转换 |
14
+ | `@agile-team/wl-skills-ui` | `^1.9.6` | 已对齐 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.5 三方对齐。
38
+ - 集团内项目:**统一锚定 `element-plus@2.2.6-prod.3` + `@jhlc/jh-ui@3.1.0`**,与 wl-skills-ui v1.9.6 三方对齐。
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.5",
3
+ "version": "1.9.6",
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",
@@ -5,8 +5,8 @@
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-label-control-gap: 16px;
9
- --wk-form-label-line-height: 22px;
8
+ --wk-form-label-control-gap: 16px;
9
+ --wk-form-label-line-height: 22px;
10
10
  }
11
11
 
12
12
  #{skin.$managed-scope-selector} {
@@ -47,22 +47,96 @@ html body {
47
47
  line-height: calc(var(--wk-form-control-height) - 2px) !important;
48
48
  }
49
49
 
50
- // number 输入只由 `.el-input__wrapper` 绘制焦点环。浏览器原生 outline
51
- // 或内部 input box-shadow 会与 wrapper 叠成双边框,并压到步进按钮分隔线。
50
+ // common-core InputNumberComponent 即使传入 controls=false,部分版本仍会
51
+ // 输出 controls-right 步进按钮。数值框保留 Element Plus wrapper 作为唯一
52
+ // 可见边框,根节点仅负责尺寸,避免 wrapper 聚焦阴影与根边框叠成双层描边。
52
53
  &.el-input-number,
53
54
  &.el-input-number:focus,
54
- &.el-input-number:focus-within,
55
- &.el-input-number .el-input,
56
- &.el-input-number .el-input__inner,
57
- &.el-input-number .el-input__inner:focus,
58
- &.el-input-number .el-input__inner:focus-visible {
55
+ &.el-input-number:focus-within {
56
+ width: 100% !important;
57
+ height: var(--wk-form-control-height) !important;
58
+ line-height: var(--wk-form-control-height) !important;
59
+ border: 0 !important;
60
+ border-radius: var(--wk-form-control-radius) !important;
59
61
  outline: none !important;
62
+ box-sizing: border-box !important;
63
+ background: transparent !important;
64
+ box-shadow: none !important;
65
+ }
66
+
67
+ &.el-input-number .el-input {
68
+ width: 100% !important;
69
+ height: 100% !important;
70
+ border: 0 !important;
71
+ outline: none !important;
72
+ background: transparent !important;
73
+ box-shadow: none !important;
74
+ }
75
+
76
+ &.el-input-number .el-input__wrapper {
77
+ width: 100% !important;
78
+ height: 100% !important;
79
+ min-height: 0 !important;
80
+ padding: 0 11px !important;
81
+ border: 0 !important;
82
+ border-radius: calc(var(--wk-form-control-radius) - 1px) !important;
83
+ box-sizing: border-box !important;
84
+ background: var(--el-bg-color, #fff) !important;
85
+ box-shadow: 0 0 0 1px var(--el-border-color, #dcdfe6) inset !important;
86
+ transition: box-shadow 0.15s ease !important;
87
+ }
88
+
89
+ &.el-input-number:not(.is-disabled):hover .el-input__wrapper {
90
+ box-shadow:
91
+ 0 0 0 1px var(--el-border-color-hover, #c0c4cc) inset !important;
92
+ }
93
+
94
+ &.el-input-number .el-input__wrapper.is-focus,
95
+ &.el-input-number:focus-within .el-input__wrapper {
96
+ box-shadow:
97
+ 0 0 0 1.5px var(--el-color-primary, #002a8f) inset !important;
98
+ }
99
+
100
+ &.el-input-number.is-disabled .el-input__wrapper {
101
+ background: var(--el-disabled-bg-color, #f5f7fa) !important;
102
+ box-shadow:
103
+ 0 0 0 1px var(--el-disabled-border-color, #e4e7ed) inset !important;
60
104
  }
61
105
 
62
106
  &.el-input-number .el-input__inner,
63
- &.el-input-number .el-input__inner:focus {
107
+ &.el-input-number .el-input__inner:focus,
108
+ &.el-input-number .el-input__inner:focus-visible {
109
+ width: 100% !important;
110
+ height: 100% !important;
111
+ line-height: calc(var(--wk-form-control-height) - 2px) !important;
112
+ padding: 0 11px !important;
64
113
  border: 0 !important;
114
+ border-radius: calc(var(--wk-form-control-radius) - 1px) !important;
115
+ outline: none !important;
116
+ background: transparent !important;
65
117
  box-shadow: none !important;
118
+ text-align: left !important;
119
+ }
120
+
121
+ &.el-input-number .el-input__wrapper .el-input__inner {
122
+ padding: 0 !important;
123
+ }
124
+
125
+ &.el-input-number .el-input-number__increase,
126
+ &.el-input-number .el-input-number__decrease {
127
+ display: none !important;
128
+ }
129
+
130
+ &.el-input-number .el-input__inner::-webkit-inner-spin-button,
131
+ &.el-input-number .el-input__inner::-webkit-outer-spin-button {
132
+ margin: 0 !important;
133
+ appearance: none !important;
134
+ -webkit-appearance: none !important;
135
+ }
136
+
137
+ &.el-input-number .el-input__inner[type="number"] {
138
+ appearance: textfield !important;
139
+ -moz-appearance: textfield !important;
66
140
  }
67
141
 
68
142
  &.el-textarea__inner {
@@ -169,14 +169,18 @@
169
169
  flex-direction: column !important;
170
170
  align-items: center !important;
171
171
  justify-content: center !important;
172
- padding: 20px 0 !important;
172
+ overflow: hidden;
173
+ // 图标采用不缩放的统一大号规格;通过紧凑间距保证常用 148px 表体
174
+ // 也能完整容纳,并以顶部 8px 留白轻微下移视觉中心。
175
+ padding: 8px 0 0 !important;
173
176
 
174
177
  &::before {
175
178
  content: "";
176
179
  display: block;
180
+ flex: 0 0 84px;
177
181
  width: 100px;
178
182
  height: 84px;
179
- margin-bottom: 18px;
183
+ margin-bottom: 10px;
180
184
  background-image: url("data:image/svg+xml,%3Csvg width='100' height='84' viewBox='0 0 100 84' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='8' y='10' width='84' height='70' rx='8' fill='%23E2E8F0' opacity='0.5'/%3E%3Crect x='4' y='4' width='84' height='70' rx='8' fill='white' stroke='%23CBD5E1' stroke-width='1.5'/%3E%3Crect x='4' y='4' width='84' height='22' rx='8' fill='%23EEF2FF'/%3E%3Crect x='4' y='18' width='84' height='8' fill='%23EEF2FF'/%3E%3Crect x='14' y='10' width='20' height='6' rx='3' fill='%23C7D2FE'/%3E%3Crect x='44' y='10' width='14' height='6' rx='3' fill='%23C7D2FE'/%3E%3Crect x='68' y='10' width='14' height='6' rx='3' fill='%23C7D2FE'/%3E%3Cline x1='4' y1='26' x2='88' y2='26' stroke='%23E2E8F0' stroke-width='1'/%3E%3Cline x1='40' y1='26' x2='40' y2='74' stroke='%23F1F5F9' stroke-width='1'/%3E%3Cline x1='64' y1='26' x2='64' y2='74' stroke='%23F1F5F9' stroke-width='1'/%3E%3Crect x='14' y='31' width='18' height='5' rx='2.5' fill='%23F1F5F9'/%3E%3Crect x='44' y='31' width='12' height='5' rx='2.5' fill='%23F1F5F9'/%3E%3Crect x='68' y='31' width='14' height='5' rx='2.5' fill='%23F1F5F9'/%3E%3Cline x1='4' y1='43' x2='88' y2='43' stroke='%23F8FAFC' stroke-width='1'/%3E%3Crect x='14' y='47' width='22' height='5' rx='2.5' fill='%23F8FAFC'/%3E%3Crect x='44' y='47' width='10' height='5' rx='2.5' fill='%23F8FAFC'/%3E%3Crect x='68' y='47' width='12' height='5' rx='2.5' fill='%23F8FAFC'/%3E%3Cline x1='4' y1='59' x2='88' y2='59' stroke='%23F8FAFC' stroke-width='1'/%3E%3Crect x='14' y='63' width='16' height='5' rx='2.5' fill='%23FAFAFA'/%3E%3Crect x='44' y='63' width='14' height='5' rx='2.5' fill='%23FAFAFA'/%3E%3Crect x='68' y='63' width='10' height='5' rx='2.5' fill='%23FAFAFA'/%3E%3Ccircle cx='74' cy='58' r='18' fill='white' stroke='%23E2E8F0' stroke-width='1.5'/%3E%3Ccircle cx='72' cy='56' r='9' fill='%23EEF2FF' stroke='%23818CF8' stroke-width='2'/%3E%3Cline x1='78.5' y1='62.5' x2='83' y2='67' stroke='%23818CF8' stroke-width='2.5' stroke-linecap='round'/%3E%3Cpath d='M68.5 52.5 L75.5 59.5' stroke='%23A5B4FC' stroke-width='1.8' stroke-linecap='round'/%3E%3Cpath d='M75.5 52.5 L68.5 59.5' stroke='%23A5B4FC' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
181
185
  background-repeat: no-repeat;
182
186
  background-size: contain;
@@ -186,17 +190,21 @@
186
190
  &::after {
187
191
  content: var(--wk-empty-hint);
188
192
  display: block;
193
+ flex: 0 0 auto;
189
194
  font-size: 12px;
190
195
  color: var(--el-text-color-placeholder, #b0b7c3);
191
- margin-top: 6px;
196
+ line-height: 18px;
197
+ margin-top: 2px;
192
198
  letter-spacing: 0.01em;
193
199
  }
194
200
  }
195
201
 
196
202
  .ag-overlay-no-rows-center {
203
+ flex: 0 0 auto;
197
204
  font-size: 14px;
198
205
  font-weight: 500;
199
206
  color: var(--el-text-color-primary, #374151);
207
+ line-height: 20px;
200
208
  letter-spacing: 0.02em;
201
209
  }
202
210