@linxin666/dsh-remote-web-ui 0.1.8 → 0.1.10
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/lib/client.js +39 -3
- package/lib/client.js.map +1 -1
- package/lib/types/client/PluginSettingsCard.d.ts +1 -1
- package/lib/types/client/PluginSettingsCard.d.ts.map +1 -1
- package/lib/types/client/PluginSettingsCard.js +10 -1
- package/lib/types/client/locales.d.ts +2 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/locales.js +2 -0
- package/lib/types/client/settings-form.d.ts +9 -1
- package/lib/types/client/settings-form.d.ts.map +1 -1
- package/lib/types/client/settings-form.js +2 -1
- package/package.json +1 -1
- package/src/client/PluginSettingsCard.tsx +31 -1
- package/src/client/locales.ts +2 -0
- package/src/client/settings-card.module.css +7 -0
- package/src/client/settings-form.ts +11 -2
package/lib/client.js
CHANGED
|
@@ -1858,7 +1858,7 @@ window.__ModuleLoader__.load({
|
|
|
1858
1858
|
}
|
|
1859
1859
|
//#endregion
|
|
1860
1860
|
//#region \0dsh-css:/home/runner/work/dsh-web-ui/dsh-web-ui/packages/dsh-remote-web-ui/src/client/settings-card.module.css.mjs
|
|
1861
|
-
const css = ".AQSrBq_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;list-style:none;transition:border-color .16s,background .16s;overflow:hidden}.AQSrBq_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.AQSrBq_header{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:10px 14px;transition:background-color .12s,box-shadow .12s;display:flex}.AQSrBq_header:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.AQSrBq_header:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_header:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_header:disabled{opacity:.5;cursor:default}.AQSrBq_headText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.AQSrBq_name{color:var(--dsw-alias-label-primary);font-weight:600}.AQSrBq_description{color:var(--dsw-alias-label-tertiary);font-size:12px}.AQSrBq_pending{color:var(--dsw-alias-state-warn-primary);font-size:12px}.AQSrBq_chevron{color:var(--dsw-alias-label-tertiary);transition:transform .12s}.AQSrBq_chevronOpen{transform:rotate(180deg)}.AQSrBq_body{flex-direction:column;gap:14px;padding:0 14px 14px;display:flex}.AQSrBq_readOnly{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px}.AQSrBq_footer{justify-content:flex-end;align-items:center;gap:8px;display:flex}.AQSrBq_failed{color:var(--dsw-alias-state-error-primary);margin:0 auto 0 0;font-size:12px}.AQSrBq_discard,.AQSrBq_save{font:inherit;cursor:pointer;border-radius:6px;padding:5px 12px;font-size:13px;transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s}.AQSrBq_discard{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}.AQSrBq_discard:hover:not(:disabled){color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.AQSrBq_discard:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_discard:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_save{border:1px solid var(--dsw-alias-button-info-fill);background:var(--dsw-alias-button-info-fill);color:var(--dsw-alias-label-primary-foreground)}.AQSrBq_save:hover:not(:disabled){border-color:var(--dsw-alias-button-info-hover);background:var(--dsw-alias-button-info-hover)}.AQSrBq_save:active:not(:disabled){border-color:var(--dsw-alias-button-info-hover);background:var(--dsw-alias-button-info-hover);filter:brightness(.96)}.AQSrBq_save:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_discard:disabled,.AQSrBq_save:disabled{opacity:.5;cursor:default}.AQSrBq_field{flex-direction:column;gap:4px;display:flex}.AQSrBq_head{align-items:center;gap:8px;display:flex}.AQSrBq_label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}.AQSrBq_badges{align-items:center;gap:6px;display:flex}.AQSrBq_badge{background:var(--dsw-alias-interactive-bg-hover-accent);min-width:0;color:var(--dsw-alias-state-business-primary);white-space:nowrap;border-radius:999px;flex:none;padding:1px 6px;font-size:11px}.AQSrBq_reset{color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;padding:1px 2px;font-size:11px;transition:background-color .12s,color .12s,box-shadow .12s}.AQSrBq_reset:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.AQSrBq_reset:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_reset:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_reset:disabled{opacity:.5;cursor:default}.AQSrBq_input,.AQSrBq_select{border:1px solid var(--dsw-alias-border-l2);font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border-radius:6px;padding:6px 8px;font-size:13px;transition:border-color .12s,box-shadow .12s}.AQSrBq_input:focus-visible,.AQSrBq_select:focus-visible{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_inputInvalid{border:1px solid var(--dsw-alias-state-error-primary);font:inherit;color:var(--dsw-alias-label-primary);border-radius:6px;padding:6px 8px;font-size:13px;transition:border-color .12s,box-shadow .12s}.AQSrBq_inputInvalid:focus-visible{border-color:var(--dsw-alias-state-error-primary);box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-state-error-primary);outline:none}.AQSrBq_input:disabled,.AQSrBq_select:disabled{opacity:.6}.AQSrBq_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px}.AQSrBq_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}@media (prefers-reduced-motion:reduce){.AQSrBq_card,.AQSrBq_header,.AQSrBq_chevron,.AQSrBq_discard,.AQSrBq_save,.AQSrBq_reset,.AQSrBq_input,.AQSrBq_select,.AQSrBq_inputInvalid{transition:none}}";
|
|
1861
|
+
const css = ".AQSrBq_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;list-style:none;transition:border-color .16s,background .16s;overflow:hidden}.AQSrBq_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.AQSrBq_header{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:10px 14px;transition:background-color .12s,box-shadow .12s;display:flex}.AQSrBq_header:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.AQSrBq_header:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_header:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_header:disabled{opacity:.5;cursor:default}.AQSrBq_headText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.AQSrBq_name{color:var(--dsw-alias-label-primary);font-weight:600}.AQSrBq_description{color:var(--dsw-alias-label-tertiary);font-size:12px}.AQSrBq_pending{color:var(--dsw-alias-state-warn-primary);font-size:12px}.AQSrBq_chevron{color:var(--dsw-alias-label-tertiary);transition:transform .12s}.AQSrBq_chevronOpen{transform:rotate(180deg)}.AQSrBq_body{flex-direction:column;gap:14px;padding:0 14px 14px;display:flex}.AQSrBq_readOnly{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px}.AQSrBq_notExposed{color:var(--dsw-alias-state-warn-primary);margin:0;font-size:12px;line-height:1.5}.AQSrBq_footer{justify-content:flex-end;align-items:center;gap:8px;display:flex}.AQSrBq_failed{color:var(--dsw-alias-state-error-primary);margin:0 auto 0 0;font-size:12px}.AQSrBq_discard,.AQSrBq_save{font:inherit;cursor:pointer;border-radius:6px;padding:5px 12px;font-size:13px;transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s}.AQSrBq_discard{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}.AQSrBq_discard:hover:not(:disabled){color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.AQSrBq_discard:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_discard:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_save{border:1px solid var(--dsw-alias-button-info-fill);background:var(--dsw-alias-button-info-fill);color:var(--dsw-alias-label-primary-foreground)}.AQSrBq_save:hover:not(:disabled){border-color:var(--dsw-alias-button-info-hover);background:var(--dsw-alias-button-info-hover)}.AQSrBq_save:active:not(:disabled){border-color:var(--dsw-alias-button-info-hover);background:var(--dsw-alias-button-info-hover);filter:brightness(.96)}.AQSrBq_save:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_discard:disabled,.AQSrBq_save:disabled{opacity:.5;cursor:default}.AQSrBq_field{flex-direction:column;gap:4px;display:flex}.AQSrBq_head{align-items:center;gap:8px;display:flex}.AQSrBq_label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}.AQSrBq_badges{align-items:center;gap:6px;display:flex}.AQSrBq_badge{background:var(--dsw-alias-interactive-bg-hover-accent);min-width:0;color:var(--dsw-alias-state-business-primary);white-space:nowrap;border-radius:999px;flex:none;padding:1px 6px;font-size:11px}.AQSrBq_reset{color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;padding:1px 2px;font-size:11px;transition:background-color .12s,color .12s,box-shadow .12s}.AQSrBq_reset:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.AQSrBq_reset:active:not(:disabled){background:var(--dsw-alias-interactive-bg-active)}.AQSrBq_reset:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_reset:disabled{opacity:.5;cursor:default}.AQSrBq_input,.AQSrBq_select{border:1px solid var(--dsw-alias-border-l2);font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border-radius:6px;padding:6px 8px;font-size:13px;transition:border-color .12s,box-shadow .12s}.AQSrBq_input:focus-visible,.AQSrBq_select:focus-visible{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-brand-primary);outline:none}.AQSrBq_inputInvalid{border:1px solid var(--dsw-alias-state-error-primary);font:inherit;color:var(--dsw-alias-label-primary);border-radius:6px;padding:6px 8px;font-size:13px;transition:border-color .12s,box-shadow .12s}.AQSrBq_inputInvalid:focus-visible{border-color:var(--dsw-alias-state-error-primary);box-shadow:0 0 0 2px var(--dsw-alias-bg-layer-3), 0 0 0 4px var(--dsw-alias-state-error-primary);outline:none}.AQSrBq_input:disabled,.AQSrBq_select:disabled{opacity:.6}.AQSrBq_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px}.AQSrBq_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}@media (prefers-reduced-motion:reduce){.AQSrBq_card,.AQSrBq_header,.AQSrBq_chevron,.AQSrBq_discard,.AQSrBq_save,.AQSrBq_reset,.AQSrBq_input,.AQSrBq_select,.AQSrBq_inputInvalid{transition:none}}";
|
|
1862
1862
|
const tagId = "@linxin666/dsh-remote-web-ui/settings-card.module.css";
|
|
1863
1863
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
1864
1864
|
const tag = document.createElement("style");
|
|
@@ -1889,6 +1889,7 @@ window.__ModuleLoader__.load({
|
|
|
1889
1889
|
"invalid": "AQSrBq_invalid",
|
|
1890
1890
|
"label": "AQSrBq_label",
|
|
1891
1891
|
"name": "AQSrBq_name",
|
|
1892
|
+
"notExposed": "AQSrBq_notExposed",
|
|
1892
1893
|
"pending": "AQSrBq_pending",
|
|
1893
1894
|
"readOnly": "AQSrBq_readOnly",
|
|
1894
1895
|
"reset": "AQSrBq_reset",
|
|
@@ -1908,7 +1909,7 @@ window.__ModuleLoader__.load({
|
|
|
1908
1909
|
/**
|
|
1909
1910
|
* Render one plugin settings card.
|
|
1910
1911
|
* @param props - the plugin's copy keys, its form state, and its controls.
|
|
1911
|
-
* @returns the card, or nothing
|
|
1912
|
+
* @returns the card, or nothing while the namespace is still loading.
|
|
1912
1913
|
*/
|
|
1913
1914
|
function PluginSettingsCard(props) {
|
|
1914
1915
|
const [open, setOpen] = (0, react.useState)(false);
|
|
@@ -1916,6 +1917,38 @@ window.__ModuleLoader__.load({
|
|
|
1916
1917
|
if (!state.available) return null;
|
|
1917
1918
|
const title = props.t(props.titleKey);
|
|
1918
1919
|
const blocked = !state.dirty || state.invalid || state.saving;
|
|
1920
|
+
if (!state.exposed) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
1921
|
+
className: settings_card_module_css_default.card,
|
|
1922
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
1923
|
+
type: "button",
|
|
1924
|
+
className: settings_card_module_css_default.header,
|
|
1925
|
+
"aria-expanded": open,
|
|
1926
|
+
"aria-label": `${props.t(open ? "settings.collapse" : "settings.expand")}: ${title}`,
|
|
1927
|
+
onClick: () => {
|
|
1928
|
+
setOpen(!open);
|
|
1929
|
+
},
|
|
1930
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
1931
|
+
className: settings_card_module_css_default.headText,
|
|
1932
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1933
|
+
className: settings_card_module_css_default.name,
|
|
1934
|
+
children: title
|
|
1935
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1936
|
+
className: settings_card_module_css_default.description,
|
|
1937
|
+
children: props.t(props.descriptionKey)
|
|
1938
|
+
})]
|
|
1939
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1940
|
+
className: open ? settings_card_module_css_default.chevronOpen : settings_card_module_css_default.chevron,
|
|
1941
|
+
children: "▾"
|
|
1942
|
+
})]
|
|
1943
|
+
}), open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1944
|
+
className: settings_card_module_css_default.body,
|
|
1945
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1946
|
+
className: settings_card_module_css_default.notExposed,
|
|
1947
|
+
role: "status",
|
|
1948
|
+
children: props.t("settings.notExposed")
|
|
1949
|
+
})
|
|
1950
|
+
}) : null]
|
|
1951
|
+
});
|
|
1919
1952
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
1920
1953
|
className: settings_card_module_css_default.card,
|
|
1921
1954
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -2168,7 +2201,8 @@ window.__ModuleLoader__.load({
|
|
|
2168
2201
|
const snapshot = this.scope.getSnapshot();
|
|
2169
2202
|
const plan = this.plan();
|
|
2170
2203
|
return {
|
|
2171
|
-
available: snapshot.status
|
|
2204
|
+
available: snapshot.status !== "loading",
|
|
2205
|
+
exposed: snapshot.status === "ready",
|
|
2172
2206
|
writable: snapshot.writable,
|
|
2173
2207
|
dirty: plan.length > 0,
|
|
2174
2208
|
invalid: plan.some((item) => item.run === void 0),
|
|
@@ -2558,6 +2592,7 @@ window.__ModuleLoader__.load({
|
|
|
2558
2592
|
"settings.off": "关",
|
|
2559
2593
|
"settings.overridden": "已覆盖",
|
|
2560
2594
|
"settings.reset": "恢复默认",
|
|
2595
|
+
"settings.notExposed": "当前 DSH 版本未向设置页暴露本插件的配置命名空间,表单不可用。可编辑 ~/.dsh/settings.yaml 直接配置,或为 dsh-host-apiproxy 的 WEB_SETTINGS_NAMESPACES 白名单补充本命名空间后重启。",
|
|
2561
2596
|
"settings.readOnly": "当前部署的设置只读。",
|
|
2562
2597
|
"settings.expand": "展开设置",
|
|
2563
2598
|
"settings.collapse": "收起设置",
|
|
@@ -2627,6 +2662,7 @@ window.__ModuleLoader__.load({
|
|
|
2627
2662
|
"settings.off": "Off",
|
|
2628
2663
|
"settings.overridden": "Overridden",
|
|
2629
2664
|
"settings.reset": "Reset to default",
|
|
2665
|
+
"settings.notExposed": "This DSH version does not expose this plugin's settings namespace to the configuration page, so the form is unavailable. Edit ~/.dsh/settings.yaml directly, or add the namespace to dsh-host-apiproxy's WEB_SETTINGS_NAMESPACES allowlist and restart.",
|
|
2630
2666
|
"settings.readOnly": "This deployment stores settings read-only.",
|
|
2631
2667
|
"settings.expand": "Show settings",
|
|
2632
2668
|
"settings.collapse": "Hide settings",
|