@hyzyn/dsh-docker 0.17.0 → 0.17.1

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.
@@ -199,10 +199,18 @@
199
199
  white-space: nowrap;
200
200
  }
201
201
 
202
- /* 侧边栏折叠(DSH 外壳在祖先元素上打 data-sidebar-collapsed):只留图标,
203
- 与 tty 的终端入口同形——否则标签会从窄栏里溢出一条竖条。
204
- 宿主的 `.collapsed .panelRow` 是 36×36、居中、无左右描边,跟齐。 */
205
- [data-sidebar-collapsed] [data-dsh-docker-entry] {
202
+ /* (D171)侧边栏折叠:只留图标,与 tty 的终端入口同形——否则标签会从窄栏里溢出一条竖条。
203
+ 宿主的 `.collapsed .panelRow` 是 36×36、居中、无左右描边,跟齐。
204
+
205
+ **切 rail 的时机要跟宿主,不能跟「点了收起」**:外壳在点下收起的那一刻就给框架打
206
+ `data-sidebar-collapsed`,但布局要到 settle(150ms)之后才落到 rail(宽内容先固定在展开
207
+ 宽度淡出)。跟着框架属性立刻切,收起的第一帧就只剩图标、还被居中推到冻结宽度的一半,
208
+ 与同栏的「插件 / 插件市场 / 更多」不在同一拍上(用户报告的「kit 入口和官方行的效果不一样」)。
209
+
210
+ 判据是宿主 README 留给集成方的稳定标记 `data-sidebar-scrollport`:**只在展开时**挂在滚动
211
+ 视口上。于是 rail = 「框架已标收起」且「入口不在带该标记的视口里」——淡出阶段标记还在,
212
+ 保持宽态;settle 后标记消失,与宿主同时切。老宿主没有该标记时 `:not()` 恒真,退回原行为。 */
213
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) {
206
214
  justify-content: center;
207
215
  width: 100%;
208
216
  min-height: 36px;
@@ -211,17 +219,17 @@
211
219
  border-inline: 0;
212
220
  }
213
221
 
214
- [data-sidebar-collapsed] .dk_entryIcon,
215
- [data-sidebar-collapsed] .dk_entryIcon svg {
222
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryIcon,
223
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryIcon svg {
216
224
  width: 18px;
217
225
  height: 18px;
218
226
  }
219
227
 
220
- [data-sidebar-collapsed] .dk_entryLabel {
228
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryLabel {
221
229
  display: none;
222
230
  }
223
231
 
224
- [data-sidebar-collapsed] .dk_entryBadge {
232
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryBadge {
225
233
  margin-left: 0;
226
234
  padding-left: 0;
227
235
  }
package/client.js CHANGED
@@ -199,10 +199,18 @@
199
199
  white-space: nowrap;
200
200
  }
201
201
 
202
- /* \u4FA7\u8FB9\u680F\u6298\u53E0\uFF08DSH \u5916\u58F3\u5728\u7956\u5148\u5143\u7D20\u4E0A\u6253 data-sidebar-collapsed\uFF09\uFF1A\u53EA\u7559\u56FE\u6807\uFF0C
203
- \u4E0E tty \u7684\u7EC8\u7AEF\u5165\u53E3\u540C\u5F62\u2014\u2014\u5426\u5219\u6807\u7B7E\u4F1A\u4ECE\u7A84\u680F\u91CC\u6EA2\u51FA\u4E00\u6761\u7AD6\u6761\u3002
204
- \u5BBF\u4E3B\u7684 \`.collapsed .panelRow\` \u662F 36\xD736\u3001\u5C45\u4E2D\u3001\u65E0\u5DE6\u53F3\u63CF\u8FB9\uFF0C\u8DDF\u9F50\u3002 */
205
- [data-sidebar-collapsed] [data-dsh-docker-entry] {
202
+ /* \uFF08D171\uFF09\u4FA7\u8FB9\u680F\u6298\u53E0\uFF1A\u53EA\u7559\u56FE\u6807\uFF0C\u4E0E tty \u7684\u7EC8\u7AEF\u5165\u53E3\u540C\u5F62\u2014\u2014\u5426\u5219\u6807\u7B7E\u4F1A\u4ECE\u7A84\u680F\u91CC\u6EA2\u51FA\u4E00\u6761\u7AD6\u6761\u3002
203
+ \u5BBF\u4E3B\u7684 \`.collapsed .panelRow\` \u662F 36\xD736\u3001\u5C45\u4E2D\u3001\u65E0\u5DE6\u53F3\u63CF\u8FB9\uFF0C\u8DDF\u9F50\u3002
204
+
205
+ **\u5207 rail \u7684\u65F6\u673A\u8981\u8DDF\u5BBF\u4E3B\uFF0C\u4E0D\u80FD\u8DDF\u300C\u70B9\u4E86\u6536\u8D77\u300D**\uFF1A\u5916\u58F3\u5728\u70B9\u4E0B\u6536\u8D77\u7684\u90A3\u4E00\u523B\u5C31\u7ED9\u6846\u67B6\u6253
206
+ \`data-sidebar-collapsed\`\uFF0C\u4F46\u5E03\u5C40\u8981\u5230 settle\uFF08150ms\uFF09\u4E4B\u540E\u624D\u843D\u5230 rail\uFF08\u5BBD\u5185\u5BB9\u5148\u56FA\u5B9A\u5728\u5C55\u5F00
207
+ \u5BBD\u5EA6\u6DE1\u51FA\uFF09\u3002\u8DDF\u7740\u6846\u67B6\u5C5E\u6027\u7ACB\u523B\u5207\uFF0C\u6536\u8D77\u7684\u7B2C\u4E00\u5E27\u5C31\u53EA\u5269\u56FE\u6807\u3001\u8FD8\u88AB\u5C45\u4E2D\u63A8\u5230\u51BB\u7ED3\u5BBD\u5EA6\u7684\u4E00\u534A\uFF0C
208
+ \u4E0E\u540C\u680F\u7684\u300C\u63D2\u4EF6 / \u63D2\u4EF6\u5E02\u573A / \u66F4\u591A\u300D\u4E0D\u5728\u540C\u4E00\u62CD\u4E0A\uFF08\u7528\u6237\u62A5\u544A\u7684\u300Ckit \u5165\u53E3\u548C\u5B98\u65B9\u884C\u7684\u6548\u679C\u4E0D\u4E00\u6837\u300D\uFF09\u3002
209
+
210
+ \u5224\u636E\u662F\u5BBF\u4E3B README \u7559\u7ED9\u96C6\u6210\u65B9\u7684\u7A33\u5B9A\u6807\u8BB0 \`data-sidebar-scrollport\`\uFF1A**\u53EA\u5728\u5C55\u5F00\u65F6**\u6302\u5728\u6EDA\u52A8
211
+ \u89C6\u53E3\u4E0A\u3002\u4E8E\u662F rail = \u300C\u6846\u67B6\u5DF2\u6807\u6536\u8D77\u300D\u4E14\u300C\u5165\u53E3\u4E0D\u5728\u5E26\u8BE5\u6807\u8BB0\u7684\u89C6\u53E3\u91CC\u300D\u2014\u2014\u6DE1\u51FA\u9636\u6BB5\u6807\u8BB0\u8FD8\u5728\uFF0C
212
+ \u4FDD\u6301\u5BBD\u6001\uFF1Bsettle \u540E\u6807\u8BB0\u6D88\u5931\uFF0C\u4E0E\u5BBF\u4E3B\u540C\u65F6\u5207\u3002\u8001\u5BBF\u4E3B\u6CA1\u6709\u8BE5\u6807\u8BB0\u65F6 \`:not()\` \u6052\u771F\uFF0C\u9000\u56DE\u539F\u884C\u4E3A\u3002 */
213
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) {
206
214
  justify-content: center;
207
215
  width: 100%;
208
216
  min-height: 36px;
@@ -211,17 +219,17 @@
211
219
  border-inline: 0;
212
220
  }
213
221
 
214
- [data-sidebar-collapsed] .dk_entryIcon,
215
- [data-sidebar-collapsed] .dk_entryIcon svg {
222
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryIcon,
223
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryIcon svg {
216
224
  width: 18px;
217
225
  height: 18px;
218
226
  }
219
227
 
220
- [data-sidebar-collapsed] .dk_entryLabel {
228
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryLabel {
221
229
  display: none;
222
230
  }
223
231
 
224
- [data-sidebar-collapsed] .dk_entryBadge {
232
+ [data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *) .dk_entryBadge {
225
233
  margin-left: 0;
226
234
  padding-left: 0;
227
235
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyzyn/dsh-docker",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "DSH Web GUI 的 Docker 容器面板插件:本机或 SSH 主机上的容器列表 / 启停删 / 日志 / 统计 / 镜像 / 一次性 exec,默认只读,配套只读优先的 agent 工具。",
5
5
  "keywords": [
6
6
  "dsh",
@@ -1323,11 +1323,15 @@ await test('切目标的过渡:过期标注 / 内容锁定 / 淡入 / 失败
1323
1323
  }
1324
1324
  })
1325
1325
 
1326
- await test('样式表:折叠态(data-sidebar-collapsed)隐藏入口标签', () => {
1327
- // DSH 外壳(dsh-client-ui-layout)在侧边栏折叠时打这个属性;tty 入口同款规则。
1328
- // 少了它,窄栏里会溢出一条竖排文字(真实踩过的回归)
1329
- assert.ok(code.includes('[data-sidebar-collapsed] [data-dsh-docker-entry]'), '缺少折叠态入口规则')
1330
- assert.ok(code.includes('[data-sidebar-collapsed] .dk_entryLabel'), '缺少折叠态标签隐藏规则')
1326
+ await test('样式表:折叠态隐藏入口标签,且只在宿主已落 rail 后生效(D171)', () => {
1327
+ // DSH 外壳在**点下收起的那一刻**就打 data-sidebar-collapsed,但布局要 150ms 之后才落到
1328
+ // rail(宽内容先冻结在展开宽度淡出)。所以规则必须带 data-sidebar-scrollport——宿主只在
1329
+ // **展开**时挂的稳定标记——这层门控:少了它,收起动画的第一帧入口就只剩图标、还被居中
1330
+ // 推到冻结宽度的一半,与同栏官方面板行不同拍(docker D171)。
1331
+ // 少了整条规则,窄栏里会溢出一条竖排文字(真实踩过的回归)。
1332
+ const gate = '[data-sidebar-collapsed] [data-dsh-docker-entry]:not([data-sidebar-scrollport] *)'
1333
+ assert.ok(code.includes(gate), '缺少折叠态入口规则(或它没带「宿主已落 rail」的门控)')
1334
+ assert.ok(code.includes(gate + ' .dk_entryLabel'), '缺少折叠态标签隐藏规则')
1331
1335
  })
1332
1336
 
1333
1337
  await test('样式表:字段标签锁死 line-height(中英混排的行框不等高会让输入框错开)', () => {