djm-ui 0.67.0 → 0.67.3
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 +15 -0
- package/README.md +27 -5
- package/dist/djm-ui.cjs +18 -2
- package/dist/djm-ui.cjs.map +2 -2
- package/dist/djm-ui.css +1 -1
- package/dist/djm-ui.esm.js +18 -2
- package/dist/djm-ui.esm.js.map +2 -2
- package/dist/djm-ui.esm.min.js +3 -3
- package/dist/djm-ui.min.cjs +3 -3
- package/dist/djm-ui.min.css +1 -1
- package/dist/djm-ui.umd.js +18 -2
- package/dist/djm-ui.umd.min.js +3 -3
- package/package.json +1 -1
- package/src/components/input/index.js +17 -0
- package/src/index.js +1 -1
- package/src/styles/components/console.css +97 -6
- package/src/styles/components/layout.css +36 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# 更新日志
|
|
2
2
|
|
|
3
|
+
## 0.67.3
|
|
4
|
+
|
|
5
|
+
- 修复浏览器自动填充残留:`DjmInput` 挂载时、`pageshow` 时若 `autocomplete="off"` 且模型为空,清掉 DOM 里被填入的值,输入框不会再显示一个没参与筛选的账号
|
|
6
|
+
- 登录类字段(`autocomplete="username"` / `current-password`)保留自动填充,不受影响
|
|
7
|
+
- 示例应用补 `:autofill` 检测,动态渲染的筛选框被自动填充时同样会清空
|
|
8
|
+
|
|
9
|
+
## 0.67.2
|
|
10
|
+
|
|
11
|
+
- 数据字典页左侧类型列表改为独立列表:去掉与面板标题重复的表头,名称与条目数同行、编码跟随下一行,选中态用内缩圆角底色
|
|
12
|
+
- 面板标题里的条目数改为弱化的辅助文字,行内操作只保留编辑与删除
|
|
13
|
+
|
|
14
|
+
## 0.67.1
|
|
15
|
+
|
|
16
|
+
- 内容区去掉 `max-width: 1560px` 限制,2K / 超宽屏(1920、2560)下表格、工作台、表单铺满可用宽度,两侧不再留大片空白;136 项单测、143 页无障碍、64 张视觉基线均无变化
|
|
17
|
+
|
|
3
18
|
## 0.67.0
|
|
4
19
|
|
|
5
20
|
从「下载后直接做 CMS / OA 后台」的角度做了一轮组件级复查,补齐窄屏与接入细节:
|
package/README.md
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
面向企业级中后台的 Vue 3 组件库:100 个组件、明暗主题与品牌色、中英文文案、按钮权限,自带完整文档与无障碍校验。
|
|
4
4
|
|
|
5
|
+
- 官网与文档:https://ui.duojumi.com
|
|
6
|
+
- npm:https://www.npmjs.com/package/djm-ui
|
|
7
|
+
|
|
5
8
|
## 环境要求
|
|
6
9
|
|
|
7
10
|
- Vue 3.4+
|
|
@@ -62,9 +65,9 @@ import DjmCol from 'djm-ui/components/grid/col'
|
|
|
62
65
|
UMD 产物复用全局 Vue,不会重复打包 Vue。Vue 必须先加载:
|
|
63
66
|
|
|
64
67
|
```html
|
|
65
|
-
<link rel="stylesheet" href="https://
|
|
66
|
-
<script src="https://
|
|
67
|
-
<script src="https://
|
|
68
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/djm-ui@0.67.3/dist/djm-ui.min.css" />
|
|
69
|
+
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
|
|
70
|
+
<script src="https://cdn.jsdelivr.net/npm/djm-ui@0.67.3/dist/djm-ui.umd.min.js"></script>
|
|
68
71
|
|
|
69
72
|
<script>
|
|
70
73
|
Vue.createApp({
|
|
@@ -140,14 +143,33 @@ setPermissions(['user:add', 'user:edit'])
|
|
|
140
143
|
## 本地开发
|
|
141
144
|
|
|
142
145
|
```bash
|
|
143
|
-
npm run dev #
|
|
144
|
-
npm run docs # 文档站
|
|
146
|
+
npm run dev # 官网 http://localhost:5180(首页落地页,/app/ 示例应用,/docs/ 文档)
|
|
147
|
+
npm run docs # 文档站 http://localhost:5181
|
|
145
148
|
npm test # 语法 + 类名命名空间 + 组件一致性审计
|
|
146
149
|
npm run typecheck # 类型声明校验
|
|
147
150
|
npm run build # 构建样式与 ESM / CJS / UMD
|
|
148
151
|
npm run visual # 视觉回归
|
|
149
152
|
```
|
|
150
153
|
|
|
154
|
+
## 官网部署
|
|
155
|
+
|
|
156
|
+
官网跑在 `ui.duojumi.com`,宝塔静态站点,目录 `/www/wwwroot/ui.duojumi.com`:
|
|
157
|
+
|
|
158
|
+
| 路径 | 内容 |
|
|
159
|
+
|---|---|
|
|
160
|
+
| `/` | 落地页(仓库根 `index.html`,自带 SEO meta 与 JSON-LD) |
|
|
161
|
+
| `/app/` | 示例应用(`app/index.html`) |
|
|
162
|
+
| `/docs/` | 组件文档(`docs/`) |
|
|
163
|
+
| `/robots.txt`、`/sitemap.xml` | 搜索引擎配置 |
|
|
164
|
+
|
|
165
|
+
文档页依赖仓库里的 `docs/`、`src/styles`、`vendor/` 保持相对路径,所以整块同步:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
./scripts/deploy-docs.sh
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
脚本默认走 `root@100.112.203.74` + `~/.ssh/jzjl_deploy`,可用 `DJM_DOCS_HOST` / `DJM_DOCS_KEY` / `DJM_DOCS_PATH` 覆盖。Nginx 配置见 `deploy/nginx/ui.duojumi.com.conf`。
|
|
172
|
+
|
|
151
173
|
## 发布
|
|
152
174
|
|
|
153
175
|
```bash
|
package/dist/djm-ui.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! DJM UI v0.67.
|
|
1
|
+
/*! DJM UI v0.67.3 · MIT · 2026-10-26 */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -1235,6 +1235,13 @@ var input_default = {
|
|
|
1235
1235
|
this.$emit("update:modelValue", event.target.value);
|
|
1236
1236
|
this.$emit("input", event);
|
|
1237
1237
|
},
|
|
1238
|
+
// 浏览器自动填充与前进后退的表单恢复只改 DOM 值、不触发 input,
|
|
1239
|
+
// 模型为空时清掉,否则会看到有值但实际没按它筛选;登录类字段保留自动填充
|
|
1240
|
+
clearStaleValue() {
|
|
1241
|
+
const input = this.$refs.input;
|
|
1242
|
+
if (!input || this.autocomplete !== "off") return;
|
|
1243
|
+
if (String(this.modelValue ?? "").length === 0 && input.value) input.value = "";
|
|
1244
|
+
},
|
|
1238
1245
|
clear() {
|
|
1239
1246
|
this.$emit("update:modelValue", "");
|
|
1240
1247
|
this.$emit("clear");
|
|
@@ -1248,6 +1255,15 @@ var input_default = {
|
|
|
1248
1255
|
if (this.$refs.input) this.$refs.input.blur();
|
|
1249
1256
|
}
|
|
1250
1257
|
},
|
|
1258
|
+
mounted() {
|
|
1259
|
+
this.clearStaleValue();
|
|
1260
|
+
this.staleTimer = setTimeout(() => this.clearStaleValue(), 300);
|
|
1261
|
+
window.addEventListener("pageshow", this.clearStaleValue);
|
|
1262
|
+
},
|
|
1263
|
+
beforeUnmount() {
|
|
1264
|
+
clearTimeout(this.staleTimer);
|
|
1265
|
+
window.removeEventListener("pageshow", this.clearStaleValue);
|
|
1266
|
+
},
|
|
1251
1267
|
template: `
|
|
1252
1268
|
<div v-if="hasAffix" class="djm-input-wrap">
|
|
1253
1269
|
<input
|
|
@@ -15377,7 +15393,7 @@ var components = [
|
|
|
15377
15393
|
org_chart_default,
|
|
15378
15394
|
page_tabs_default
|
|
15379
15395
|
];
|
|
15380
|
-
var version = "0.67.
|
|
15396
|
+
var version = "0.67.3";
|
|
15381
15397
|
function install(app, options = {}) {
|
|
15382
15398
|
if (options.locale) setLocale(options.locale);
|
|
15383
15399
|
components.forEach((component) => app.component(component.name, component));
|