@1e0zj/dsh-plugin-mall 0.1.4 → 0.1.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/package.json +1 -1
- package/src/client.js +43 -32
package/package.json
CHANGED
package/src/client.js
CHANGED
|
@@ -30,8 +30,6 @@ window.__ModuleLoader__.load({
|
|
|
30
30
|
".mkt_btnDanger:hover:not(:disabled){border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}",
|
|
31
31
|
".mkt_btnSm{padding:3px 10px;font-size:12px}",
|
|
32
32
|
".mkt_error{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}",
|
|
33
|
-
".mkt_columns{display:grid;grid-template-columns:1fr 320px;gap:14px;align-items:start}",
|
|
34
|
-
"@media (max-width:860px){.mkt_columns{grid-template-columns:1fr}}",
|
|
35
33
|
".mkt_list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:stretch;min-width:0}",
|
|
36
34
|
"@media (max-width:820px){.mkt_list{grid-template-columns:minmax(0,1fr)}}",
|
|
37
35
|
".mkt_listHead{grid-column:1/-1;font-size:12px;color:var(--dsw-alias-label-tertiary)}",
|
|
@@ -41,16 +39,18 @@ window.__ModuleLoader__.load({
|
|
|
41
39
|
".mkt_meta{font-size:12px;color:var(--dsw-alias-label-tertiary)}",
|
|
42
40
|
".mkt_desc{font-size:12.5px;color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere}",
|
|
43
41
|
".mkt_cardActions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:auto;padding-top:4px}",
|
|
44
|
-
".
|
|
42
|
+
".mkt_infoCard{max-width:640px}",
|
|
45
43
|
".mkt_panelTitle{font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary);margin:0}",
|
|
44
|
+
".mkt_panelRow{display:flex;align-items:center;gap:8px}",
|
|
45
|
+
".mkt_panelRow .mkt_link{margin-left:auto}",
|
|
46
46
|
".mkt_pre{font-family:Consolas,Monaco,monospace;font-size:11.5px;line-height:16px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-secondary,#f6f7f8);border-radius:6px;padding:8px;max-height:220px;overflow:auto;white-space:pre-wrap;word-break:break-all}",
|
|
47
47
|
".mkt_ok{color:var(--dsw-alias-state-success-primary,#2f855a)}",
|
|
48
48
|
".mkt_badge{display:inline-block;border-radius:999px;padding:1px 8px;font-size:11px;border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-tertiary)}",
|
|
49
49
|
".mkt_link{color:var(--dsw-alias-state-business-primary);font-size:12px;text-decoration:none;cursor:pointer}",
|
|
50
50
|
".mkt_installedHead{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:0;margin:0;cursor:pointer;font:inherit;text-align:left}",
|
|
51
51
|
".mkt_installedHead:hover .mkt_panelTitle{color:var(--dsw-alias-state-business-primary)}",
|
|
52
|
-
".
|
|
53
|
-
"
|
|
52
|
+
".mkt_installedToggle{margin-left:auto}",
|
|
53
|
+
".mkt_depList{display:flex;flex-direction:column;gap:6px;margin-top:8px}",
|
|
54
54
|
".mkt_depRow{display:flex;justify-content:space-between;align-items:center;gap:8px}",
|
|
55
55
|
].join("\n");
|
|
56
56
|
var tagId = "@1e0zj/dsh-plugin-mall/market-tab.css";
|
|
@@ -154,8 +154,11 @@ window.__ModuleLoader__.load({
|
|
|
154
154
|
var info = props.info;
|
|
155
155
|
if (!info) return null;
|
|
156
156
|
var data = info.data;
|
|
157
|
-
return h("div", { className: "mkt_card" },
|
|
158
|
-
h("
|
|
157
|
+
return h("div", { className: "mkt_card mkt_infoCard", ref: props.panelRef },
|
|
158
|
+
h("div", { className: "mkt_panelRow" },
|
|
159
|
+
h("p", { className: "mkt_panelTitle" }, "仓库详情"),
|
|
160
|
+
props.onClose ? h("span", { className: "mkt_link", onClick: props.onClose }, "✕ 关闭") : null
|
|
161
|
+
),
|
|
159
162
|
info.loading ? h("div", { className: "mkt_meta" }, "加载中…")
|
|
160
163
|
: info.error ? h("div", { className: "mkt_error" }, info.error)
|
|
161
164
|
: !data ? null
|
|
@@ -220,7 +223,7 @@ window.__ModuleLoader__.load({
|
|
|
220
223
|
},
|
|
221
224
|
h("span", { className: "mkt_panelTitle" }, "已装插件"),
|
|
222
225
|
h("span", { className: "mkt_badge" }, count + " 个"),
|
|
223
|
-
h("span", { className: "mkt_meta" }, open ? "收起 ▲" : "展开 ▼")
|
|
226
|
+
h("span", { className: "mkt_meta mkt_installedToggle" }, open ? "收起 ▲" : "展开 ▼")
|
|
224
227
|
),
|
|
225
228
|
installed.error
|
|
226
229
|
? h("div", { className: "mkt_error" }, installed.error)
|
|
@@ -271,6 +274,7 @@ window.__ModuleLoader__.load({
|
|
|
271
274
|
var _removing = useState({});
|
|
272
275
|
var removing = _removing[0];
|
|
273
276
|
var setRemoving = _removing[1];
|
|
277
|
+
var infoRef = useRef(null);
|
|
274
278
|
|
|
275
279
|
var call = useCallback(function (endpoint, payload) {
|
|
276
280
|
return rpc.call("/market", endpoint, payload || {}).then(function (res) {
|
|
@@ -300,6 +304,17 @@ window.__ModuleLoader__.load({
|
|
|
300
304
|
});
|
|
301
305
|
}, [call]);
|
|
302
306
|
|
|
307
|
+
var doCloseInfo = useCallback(function () {
|
|
308
|
+
setInfo(null);
|
|
309
|
+
}, []);
|
|
310
|
+
|
|
311
|
+
// 详情面板在列表上方;点"详情"时平滑滚到面板,免得用户找不到。
|
|
312
|
+
useEffect(function () {
|
|
313
|
+
if (info && infoRef.current && typeof infoRef.current.scrollIntoView === "function") {
|
|
314
|
+
infoRef.current.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
315
|
+
}
|
|
316
|
+
}, [info]);
|
|
317
|
+
|
|
303
318
|
var refreshInstalled = useCallback(function () {
|
|
304
319
|
call("installed", {}).then(function (value) {
|
|
305
320
|
setInstalled(value);
|
|
@@ -388,30 +403,26 @@ window.__ModuleLoader__.load({
|
|
|
388
403
|
),
|
|
389
404
|
error ? h("div", { className: "mkt_error" }, error) : null,
|
|
390
405
|
h(InstalledPanel, { installed: installed, removing: removing, onUninstall: doUninstall }),
|
|
391
|
-
h(
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
h(InfoPanel, { info: info, onInstall: doInstall }),
|
|
412
|
-
h(JobsPanel, { jobs: jobs })
|
|
413
|
-
)
|
|
414
|
-
)
|
|
406
|
+
h(InfoPanel, { info: info, onInstall: doInstall, onClose: doCloseInfo, panelRef: infoRef }),
|
|
407
|
+
h("div", { className: "mkt_list" },
|
|
408
|
+
results == null
|
|
409
|
+
? h("div", { className: "mkt_meta mkt_listHead" }, loading ? "正在加载最热插件…" : "—")
|
|
410
|
+
: results.items.length === 0
|
|
411
|
+
? h("div", { className: "mkt_meta mkt_listHead" }, "没有匹配的仓库。")
|
|
412
|
+
: h(React.Fragment, null,
|
|
413
|
+
h("div", { className: "mkt_meta mkt_listHead" }, "共 " + results.total + " 个仓库(显示 " + results.items.length + " 个)"),
|
|
414
|
+
results.items.map(function (item) {
|
|
415
|
+
return h(RepoCard, {
|
|
416
|
+
key: item.fullName,
|
|
417
|
+
item: item,
|
|
418
|
+
installing: installing[item.fullName] === true,
|
|
419
|
+
onInstall: doInstall,
|
|
420
|
+
onInfo: doInfo,
|
|
421
|
+
});
|
|
422
|
+
})
|
|
423
|
+
)
|
|
424
|
+
),
|
|
425
|
+
h(JobsPanel, { jobs: jobs })
|
|
415
426
|
);
|
|
416
427
|
}
|
|
417
428
|
|