@webx-ui/module-settings 0.1.3 → 0.3.0
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/dist/index.js +73 -59
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useAdmin as
|
|
3
|
-
import { toast as
|
|
4
|
-
function
|
|
1
|
+
import { defineComponent as B, ref as u, computed as M, onMounted as N, openBlock as l, createElementBlock as P, createElementVNode as A, createVNode as k, unref as a, withCtx as g, createTextVNode as _, toDisplayString as x, createBlock as v, createCommentVNode as w } from "vue";
|
|
2
|
+
import { useAdmin as V, useTranslate as E, useErrorText as T, WxScreen as D } from "@webx-ui/module-admin";
|
|
3
|
+
import { toast as p, WxHeading as H, WxButton as S, WxSkeleton as I, WxActionBar as O } from "@webx-ui/core";
|
|
4
|
+
function U(e) {
|
|
5
5
|
const t = `${e.apiPath}/settings`;
|
|
6
6
|
return {
|
|
7
7
|
async load() {
|
|
8
8
|
return (await e.http.get(t)).data.values;
|
|
9
9
|
},
|
|
10
|
-
async save(
|
|
11
|
-
return (await e.http.put(t, { values:
|
|
10
|
+
async save(n) {
|
|
11
|
+
return (await e.http.put(t, { values: n })).data.values;
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
const
|
|
15
|
+
const $ = {
|
|
16
16
|
module: {
|
|
17
17
|
title: "Settings"
|
|
18
18
|
},
|
|
@@ -21,94 +21,108 @@ const I = {
|
|
|
21
21
|
saved: "Settings saved.",
|
|
22
22
|
failed: "Some values were not accepted. Check the highlighted fields."
|
|
23
23
|
}
|
|
24
|
-
},
|
|
25
|
-
function
|
|
24
|
+
}, b = /* @__PURE__ */ new WeakSet();
|
|
25
|
+
function j() {
|
|
26
26
|
try {
|
|
27
|
-
const { i18n: e } =
|
|
28
|
-
|
|
27
|
+
const { i18n: e } = V();
|
|
28
|
+
b.has(e) || (e.defaults("webx-settings", $), b.add(e));
|
|
29
29
|
} catch {
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
const
|
|
32
|
+
const q = { class: "wx-settings" }, z = { class: "wx-settings__head" }, F = /* @__PURE__ */ B({
|
|
33
33
|
__name: "SettingsPage",
|
|
34
34
|
setup(e) {
|
|
35
|
-
const t =
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
() => t.state.manifest?.modules.find((
|
|
35
|
+
const t = V(), n = U(t);
|
|
36
|
+
j();
|
|
37
|
+
const s = E("webx-settings"), c = T(), r = u({}), f = u({}), m = u(!0), d = u(!1), y = t.can("settings.manage"), W = M(
|
|
38
|
+
() => t.state.manifest?.modules.find((o) => o.id === "settings")?.title ?? s("module.title")
|
|
39
39
|
);
|
|
40
|
-
|
|
40
|
+
N(async () => {
|
|
41
41
|
try {
|
|
42
|
-
|
|
43
|
-
} catch (
|
|
44
|
-
|
|
45
|
-
d.danger(n?.message ?? String(r));
|
|
42
|
+
r.value = await n.load();
|
|
43
|
+
} catch (o) {
|
|
44
|
+
p.danger(c(o));
|
|
46
45
|
} finally {
|
|
47
|
-
|
|
46
|
+
m.value = !1;
|
|
48
47
|
}
|
|
49
48
|
});
|
|
50
|
-
async function
|
|
51
|
-
|
|
49
|
+
async function h() {
|
|
50
|
+
d.value = !0, f.value = {};
|
|
52
51
|
try {
|
|
53
|
-
|
|
54
|
-
} catch (
|
|
55
|
-
const
|
|
56
|
-
|
|
52
|
+
r.value = await n.save(r.value), p.success(s("page.saved")), t.refreshManifest();
|
|
53
|
+
} catch (o) {
|
|
54
|
+
const i = o.body;
|
|
55
|
+
i?.errors ? (f.value = i.errors, p.danger(s("page.failed"))) : p.danger(c(o, s("page.failed")));
|
|
57
56
|
} finally {
|
|
58
|
-
|
|
57
|
+
d.value = !1;
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
|
-
return (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
default:
|
|
65
|
-
|
|
60
|
+
return (o, i) => (l(), P("div", q, [
|
|
61
|
+
A("div", z, [
|
|
62
|
+
k(a(H), { level: 2 }, {
|
|
63
|
+
default: g(() => [
|
|
64
|
+
_(x(W.value), 1)
|
|
66
65
|
]),
|
|
67
66
|
_: 1
|
|
68
67
|
}),
|
|
69
|
-
|
|
68
|
+
a(y) ? (l(), v(a(S), {
|
|
70
69
|
key: 0,
|
|
71
70
|
type: "primary",
|
|
72
|
-
loading:
|
|
73
|
-
onClick:
|
|
71
|
+
loading: d.value,
|
|
72
|
+
onClick: h
|
|
74
73
|
}, {
|
|
75
|
-
default:
|
|
76
|
-
|
|
74
|
+
default: g(() => [
|
|
75
|
+
_(x(a(s)("page.save")), 1)
|
|
77
76
|
]),
|
|
78
77
|
_: 1
|
|
79
|
-
}, 8, ["loading"])) :
|
|
78
|
+
}, 8, ["loading"])) : w("", !0)
|
|
80
79
|
]),
|
|
81
|
-
|
|
80
|
+
m.value ? (l(), v(a(I), {
|
|
82
81
|
key: 0,
|
|
83
82
|
rows: 4
|
|
84
|
-
})) : (
|
|
83
|
+
})) : (l(), v(a(D), {
|
|
85
84
|
key: 1,
|
|
86
|
-
modelValue:
|
|
87
|
-
"onUpdate:modelValue":
|
|
85
|
+
modelValue: r.value,
|
|
86
|
+
"onUpdate:modelValue": i[0] || (i[0] = (C) => r.value = C),
|
|
88
87
|
name: "settings.index",
|
|
89
|
-
errors:
|
|
90
|
-
disabled: !
|
|
91
|
-
}, null, 8, ["modelValue", "errors", "disabled"]))
|
|
88
|
+
errors: f.value,
|
|
89
|
+
disabled: !a(y)
|
|
90
|
+
}, null, 8, ["modelValue", "errors", "disabled"])),
|
|
91
|
+
a(y) && !m.value ? (l(), v(a(O), { key: 2 }, {
|
|
92
|
+
default: g(() => [
|
|
93
|
+
k(a(S), {
|
|
94
|
+
type: "primary",
|
|
95
|
+
loading: d.value,
|
|
96
|
+
onClick: h
|
|
97
|
+
}, {
|
|
98
|
+
default: g(() => [
|
|
99
|
+
_(x(a(s)("page.save")), 1)
|
|
100
|
+
]),
|
|
101
|
+
_: 1
|
|
102
|
+
}, 8, ["loading"])
|
|
103
|
+
]),
|
|
104
|
+
_: 1
|
|
105
|
+
})) : w("", !0)
|
|
92
106
|
]));
|
|
93
107
|
}
|
|
94
|
-
}),
|
|
95
|
-
const
|
|
96
|
-
for (const [
|
|
97
|
-
s
|
|
98
|
-
return
|
|
99
|
-
},
|
|
100
|
-
function
|
|
108
|
+
}), G = (e, t) => {
|
|
109
|
+
const n = e.__vccOpts || e;
|
|
110
|
+
for (const [s, c] of t)
|
|
111
|
+
n[s] = c;
|
|
112
|
+
return n;
|
|
113
|
+
}, J = /* @__PURE__ */ G(F, [["__scopeId", "data-v-1738edc9"]]);
|
|
114
|
+
function R(e = {}) {
|
|
101
115
|
const t = e.path ?? "/settings";
|
|
102
116
|
return {
|
|
103
117
|
id: "settings",
|
|
104
118
|
path: t,
|
|
105
|
-
routes: [{ path: t, name: "webx.settings", component:
|
|
119
|
+
routes: [{ path: t, name: "webx.settings", component: J }]
|
|
106
120
|
};
|
|
107
121
|
}
|
|
108
122
|
export {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
123
|
+
J as WxSettingsPage,
|
|
124
|
+
U as createSettingsApi,
|
|
125
|
+
R as settings,
|
|
126
|
+
$ as settingsMessages
|
|
113
127
|
};
|
|
114
128
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/api.ts","../src/messages.ts","../src/i18n.ts","../src/SettingsPage.vue","../src/module.ts"],"sourcesContent":["import type { AdminContext } from '@webx-ui/module-admin'\nimport type { SettingsValues } from './types'\n\nexport interface SettingsApi {\n /** Every value the screen describes, as stored. */\n load(): Promise<SettingsValues>\n /** Sends the values back; answers with what the server kept. A 422 lands as `HttpError`. */\n save(values: SettingsValues): Promise<SettingsValues>\n}\n\n/** `GET` and `PUT` on `/settings`, under the panel's API path. */\nexport function createSettingsApi(admin: AdminContext): SettingsApi {\n const base = `${admin.apiPath}/settings`\n\n return {\n async load() {\n const body = await admin.http.get<{ data: { values: SettingsValues } }>(base)\n\n return body.data.values\n },\n async save(values) {\n const body = await admin.http.put<{ data: { values: SettingsValues } }>(base, { values })\n\n return body.data.values\n },\n }\n}\n","import type { Messages } from '@webx-ui/module-admin'\n\n/**\n * What this package says, in English — the same keys `webx-ui/module-settings` ships as\n * `lang/en/*.php`, so a key never reaches the screen when a translation is missing.\n */\nexport const settingsMessages: Record<string, Messages> = {\n module: {\n title: 'Settings',\n },\n page: {\n save: 'Save',\n saved: 'Settings saved.',\n failed: 'Some values were not accepted. Check the highlighted fields.',\n },\n}\n","import { useAdmin } from '@webx-ui/module-admin'\nimport { settingsMessages } from './messages'\n\nconst seeded = new WeakSet<object>()\n\n/** Puts this package's English under the panel's dictionary, once per panel. */\nexport function useSettingsMessages(): void {\n try {\n const { i18n } = useAdmin()\n\n if (!seeded.has(i18n)) {\n i18n.defaults('webx-settings', settingsMessages)\n seeded.add(i18n)\n }\n } catch {\n // Outside a panel there is no dictionary to seed, and `useTranslate` falls back on its own.\n }\n}\n","<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue'\nimport { useAdmin, useTranslate, WxScreen } from '@webx-ui/module-admin'\nimport { toast, WxButton, WxHeading, WxSkeleton } from '@webx-ui/core'\nimport type { ScreenModel } from '@webx-ui/schema'\nimport { createSettingsApi } from './api'\nimport { useSettingsMessages } from './i18n'\n\n/**\n * The settings section: the screen the server describes, and the
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/api.ts","../src/messages.ts","../src/i18n.ts","../src/SettingsPage.vue","../src/module.ts"],"sourcesContent":["import type { AdminContext } from '@webx-ui/module-admin'\nimport type { SettingsValues } from './types'\n\nexport interface SettingsApi {\n /** Every value the screen describes, as stored. */\n load(): Promise<SettingsValues>\n /** Sends the values back; answers with what the server kept. A 422 lands as `HttpError`. */\n save(values: SettingsValues): Promise<SettingsValues>\n}\n\n/** `GET` and `PUT` on `/settings`, under the panel's API path. */\nexport function createSettingsApi(admin: AdminContext): SettingsApi {\n const base = `${admin.apiPath}/settings`\n\n return {\n async load() {\n const body = await admin.http.get<{ data: { values: SettingsValues } }>(base)\n\n return body.data.values\n },\n async save(values) {\n const body = await admin.http.put<{ data: { values: SettingsValues } }>(base, { values })\n\n return body.data.values\n },\n }\n}\n","import type { Messages } from '@webx-ui/module-admin'\n\n/**\n * What this package says, in English — the same keys `webx-ui/module-settings` ships as\n * `lang/en/*.php`, so a key never reaches the screen when a translation is missing.\n */\nexport const settingsMessages: Record<string, Messages> = {\n module: {\n title: 'Settings',\n },\n page: {\n save: 'Save',\n saved: 'Settings saved.',\n failed: 'Some values were not accepted. Check the highlighted fields.',\n },\n}\n","import { useAdmin } from '@webx-ui/module-admin'\nimport { settingsMessages } from './messages'\n\nconst seeded = new WeakSet<object>()\n\n/** Puts this package's English under the panel's dictionary, once per panel. */\nexport function useSettingsMessages(): void {\n try {\n const { i18n } = useAdmin()\n\n if (!seeded.has(i18n)) {\n i18n.defaults('webx-settings', settingsMessages)\n seeded.add(i18n)\n }\n } catch {\n // Outside a panel there is no dictionary to seed, and `useTranslate` falls back on its own.\n }\n}\n","<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue'\nimport { useAdmin, useErrorText, useTranslate, WxScreen } from '@webx-ui/module-admin'\nimport { toast, WxActionBar, WxButton, WxHeading, WxSkeleton } from '@webx-ui/core'\nimport type { ScreenModel } from '@webx-ui/schema'\nimport { createSettingsApi } from './api'\nimport { useSettingsMessages } from './i18n'\n\n/**\n * The settings section: the screen the server describes, and the saving that is the page's own\n * — in the head, and again in the bar along the bottom, because the form is taller than a\n * window and the head goes with the scroll. The screen does not know how it is saved; this does.\n */\nconst context = useAdmin()\nconst api = createSettingsApi(context)\nuseSettingsMessages()\n\nconst t = useTranslate('webx-settings')\n/* Not the server's `message`: the panel says how a request failed in its own words (§13.3). */\nconst message = useErrorText()\n\nconst values = ref<ScreenModel>({})\nconst errors = ref<Record<string, string[]>>({})\nconst loading = ref(true)\nconst saving = ref(false)\n\nconst canManage = context.can('settings.manage')\n\n/** The section's name, as the server translated it; the built-in English until it arrives. */\nconst title = computed(\n () =>\n context.state.manifest?.modules.find((module) => module.id === 'settings')?.title ??\n t('module.title'),\n)\n\nonMounted(async () => {\n try {\n values.value = await api.load()\n } catch (error) {\n toast.danger(message(error))\n } finally {\n loading.value = false\n }\n})\n\nasync function save(): Promise<void> {\n saving.value = true\n errors.value = {}\n\n try {\n values.value = await api.save(values.value)\n toast.success(t('page.saved'))\n\n // Some of what this screen holds is also what the panel is wearing — the logo in the\n // corner, the mark on the rail, the name of the site. The manifest is where the shell\n // reads those, so saving them here has to hand the shell a new one; otherwise the logo\n // somebody has just replaced goes on being the old one until the page is reloaded.\n void context.refreshManifest()\n } catch (error) {\n const body = (error as { body?: { errors?: Record<string, string[]>; message?: string } }).body\n\n if (body?.errors) {\n errors.value = body.errors\n toast.danger(t('page.failed'))\n } else {\n toast.danger(message(error, t('page.failed')))\n }\n } finally {\n saving.value = false\n }\n}\n</script>\n\n<template>\n <div class=\"wx-settings\">\n <div class=\"wx-settings__head\">\n <wx-heading :level=\"2\">{{ title }}</wx-heading>\n <wx-button v-if=\"canManage\" type=\"primary\" :loading=\"saving\" @click=\"save\">\n {{ t('page.save') }}\n </wx-button>\n </div>\n\n <wx-skeleton v-if=\"loading\" :rows=\"4\" />\n <wx-screen\n v-else\n v-model=\"values\"\n name=\"settings.index\"\n :errors=\"errors\"\n :disabled=\"!canManage\"\n />\n\n <!-- The settings are longer than a window, and the button in the head is off the top of it\n by the second group of fields. This is the same button, where the eye already is. -->\n <wx-action-bar v-if=\"canManage && !loading\">\n <wx-button type=\"primary\" :loading=\"saving\" @click=\"save\">{{ t('page.save') }}</wx-button>\n </wx-action-bar>\n </div>\n</template>\n\n<style scoped>\n/* A column, because the bar along the bottom is pushed there by an auto margin — and it is\n `WxMain` that gives a screen carrying one the height to push it down through. */\n.wx-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wx-gap, var(--wx-space-16));\n}\n\n.wx-settings__head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wx-space-12);\n}\n</style>\n","import type { AdminModule } from '@webx-ui/module-admin'\nimport SettingsPage from './SettingsPage.vue'\n\nexport interface SettingsOptions {\n /** Where the section lives inside the panel. */\n path?: string\n}\n\n/**\n * The settings, as a section of the panel.\n *\n * The id matches the module the server reports, which is what makes the entry appear in the\n * navigation: a section shows up when both halves are installed.\n */\nexport function settings(options: SettingsOptions = {}): AdminModule {\n const path = options.path ?? '/settings'\n\n return {\n id: 'settings',\n path,\n routes: [{ path, name: 'webx.settings', component: SettingsPage }],\n }\n}\n"],"names":["createSettingsApi","admin","base","values","settingsMessages","seeded","useSettingsMessages","i18n","useAdmin","context","api","t","useTranslate","message","useErrorText","ref","errors","loading","saving","canManage","title","computed","module","onMounted","error","toast","save","body","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_unref","WxHeading","_createBlock","WxButton","WxSkeleton","WxScreen","$event","WxActionBar","settings","options","path","SettingsPage"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.wx-settings[data-v-
|
|
1
|
+
.wx-settings[data-v-1738edc9]{display:flex;flex-direction:column;gap:var(--wx-gap, var(--wx-space-16))}.wx-settings__head[data-v-1738edc9]{display:flex;align-items:center;justify-content:space-between;gap:var(--wx-space-12)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webx-ui/module-settings",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Site settings for the WebX UI admin panel: the section that draws the settings screen and saves it.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"vue-router": "^4.5.0"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@webx-ui/core": "^0.
|
|
46
|
-
"@webx-ui/module-admin": "^0.
|
|
47
|
-
"@webx-ui/schema": "^0.2.
|
|
45
|
+
"@webx-ui/core": "^0.22.0",
|
|
46
|
+
"@webx-ui/module-admin": "^0.6.0",
|
|
47
|
+
"@webx-ui/schema": "^0.2.3"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/node": "^24.10.1",
|