dsh-composer-ux 0.29.1 → 0.29.2
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 +19 -0
- package/README.md +1 -1
- package/dsh-plugin.json +1 -1
- package/lib/client.js +25 -1
- package/lib/client.js.map +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
+
## [0.29.2] — 2026-10-29(展开时把「账号与其他 ▴」缩进到账号行右端)
|
|
6
|
+
|
|
7
|
+
用户 2026-10-29(截图圈住「方文」右侧的空白):「这个展开时,把这个账号和其他和收缩按钮放到这个位置」。
|
|
8
|
+
|
|
9
|
+
**改了什么**
|
|
10
|
+
|
|
11
|
+
- **展开态**:那行「账号与其他 ▴」不再单独占一整行,缩进到账号那一块(`settingsArea`)的**右端**,
|
|
12
|
+
绝对定位、不占布局高度 —— 也就是你框的那个空白位置。
|
|
13
|
+
- **收起态**:仍是底部容器前面那一整条「账号与其他 ▾」(这时账号行被一起藏了,没有别的落脚点)。
|
|
14
|
+
|
|
15
|
+
**实现**:同一个按钮在两种状态下换父节点(收起 → 容器前面的兄弟节点;展开 → 账号块内的绝对定位),
|
|
16
|
+
只动我们自己那一个按钮的 parent/属性;账号块只加一个 `position: relative`(做包含块),
|
|
17
|
+
宿主与别的插件的节点照旧一个不碰。
|
|
18
|
+
|
|
19
|
+
**顺手修了测试桩的一个失真**:桩的 `appendChild/insertBefore` 之前不会把节点从旧父节点摘下来
|
|
20
|
+
(真 DOM 会),于是"移动按钮"这件事在测试里会变成两个按钮。桩已按真实语义修正。
|
|
21
|
+
|
|
22
|
+
**测试**:`test/sidebar-footer.mjs` 新增第 6 节(9 条);变异新增 TE(展开时还在老位置占一行)。
|
|
23
|
+
|
|
5
24
|
## [0.29.1] — 2026-10-29(「账号与其他」+ 收起状态不再记忆:打开就收起)
|
|
6
25
|
|
|
7
26
|
用户 2026-10-29 两条:
|
package/README.md
CHANGED
|
@@ -684,7 +684,7 @@ node build.mjs # 产出 lib/index.js + lib/client.js
|
|
|
684
684
|
# 里同版本的 npm 包(两者逐字节相同)——CI 上走的就是退路
|
|
685
685
|
npm test # 30 个套件;当前 2621 passed, 0 failed(2026-10-28 实测;CI 三平台同样全绿)
|
|
686
686
|
# 走 scripts/run-tests.mjs:顺带把"多少套件/多少条"记进 test/.last-run.json
|
|
687
|
-
npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(
|
|
687
|
+
npm run test:mutations # 手动跑:变异测试,证明那套护栏真的在咬人(206 条,须单独跑)
|
|
688
688
|
# 同样记录结果,供下面的文档门禁核对
|
|
689
689
|
npm run gates # 发版门禁三条一起跑:tag 指向 / 包内容 / 文档数字
|
|
690
690
|
npm run check:tag # ① tag 名里的版本 == 该 tag 所指提交里的 package.json 版本
|
package/dsh-plugin.json
CHANGED
package/lib/client.js
CHANGED
|
@@ -2945,6 +2945,7 @@ function applyNavFold(doc, state3, onToggle) {
|
|
|
2945
2945
|
var FOOTER_FOLD_ATTR = "data-ux-footer-fold";
|
|
2946
2946
|
var FOOTER_HEAD_ATTR = "data-ux-footer-fold-head";
|
|
2947
2947
|
var FOOTER_FOLD_STYLE_ATTR = "data-ux-footer-fold-style";
|
|
2948
|
+
var FOOTER_HEAD_INLINE_ATTR = "data-ux-footer-inline";
|
|
2948
2949
|
var FOOTER_HEAD_TEXT = "\u8D26\u53F7\u4E0E\u5176\u4ED6";
|
|
2949
2950
|
var ACCOUNT_LABELS = ["\u8D26\u53F7\u83DC\u5355", "Account menu", "\u8D26\u6237\u83DC\u5355"];
|
|
2950
2951
|
var FOOTER_FOLD_CSS = `
|
|
@@ -2966,6 +2967,17 @@ var FOOTER_FOLD_CSS = `
|
|
|
2966
2967
|
cursor: pointer;
|
|
2967
2968
|
}
|
|
2968
2969
|
[${FOOTER_HEAD_ATTR}]:hover { background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-secondary); }
|
|
2970
|
+
/* \u5C55\u5F00\u6001\uFF1A\u8D34\u5728\u8D26\u53F7\u90A3\u4E00\u884C\u7684\u53F3\u7AEF\uFF0C\u4E0D\u5360\u5E03\u5C40\u9AD8\u5EA6\uFF08\u7EDD\u5BF9\u5B9A\u4F4D\u5728\u8D26\u53F7\u5757\u91CC\uFF09\u3002 */
|
|
2971
|
+
[${FOOTER_HEAD_ATTR}][${FOOTER_HEAD_INLINE_ATTR}] {
|
|
2972
|
+
position: absolute;
|
|
2973
|
+
right: 6px;
|
|
2974
|
+
top: 50%;
|
|
2975
|
+
transform: translateY(-50%);
|
|
2976
|
+
width: auto;
|
|
2977
|
+
max-width: 55%;
|
|
2978
|
+
padding: 2px 6px;
|
|
2979
|
+
z-index: 1;
|
|
2980
|
+
}
|
|
2969
2981
|
[${FOOTER_HEAD_ATTR}]:focus-visible { outline: 2px solid var(--dsw-alias-brand-primary); outline-offset: -2px; }
|
|
2970
2982
|
[${FOOTER_HEAD_ATTR}] > span[data-ux-footer-fold-chevron] { margin-left: auto; opacity: .7; }
|
|
2971
2983
|
`;
|
|
@@ -3001,7 +3013,19 @@ function ensureHeader2(doc, footer, state3, onToggle) {
|
|
|
3001
3013
|
head = doc.createElement("button");
|
|
3002
3014
|
head.type = "button";
|
|
3003
3015
|
head.setAttribute(FOOTER_HEAD_ATTR, "");
|
|
3004
|
-
|
|
3016
|
+
}
|
|
3017
|
+
const accountArea = footer.lastElementChild;
|
|
3018
|
+
const inline = !state3.collapsed && accountArea !== null;
|
|
3019
|
+
const parent = inline ? accountArea : footer.parentElement;
|
|
3020
|
+
if (parent !== null && head.parentElement !== parent) {
|
|
3021
|
+
if (inline) parent.appendChild(head);
|
|
3022
|
+
else parent.insertBefore(head, footer);
|
|
3023
|
+
}
|
|
3024
|
+
if (inline && accountArea !== null) {
|
|
3025
|
+
if (accountArea.style.position !== "relative") accountArea.style.position = "relative";
|
|
3026
|
+
if (!head.hasAttribute(FOOTER_HEAD_INLINE_ATTR)) head.setAttribute(FOOTER_HEAD_INLINE_ATTR, "");
|
|
3027
|
+
} else if (head.hasAttribute(FOOTER_HEAD_INLINE_ATTR)) {
|
|
3028
|
+
head.removeAttribute(FOOTER_HEAD_INLINE_ATTR);
|
|
3005
3029
|
}
|
|
3006
3030
|
const open = !state3.collapsed;
|
|
3007
3031
|
head.setAttribute("aria-expanded", open ? "true" : "false");
|