@jskit-ai/console-web 0.1.4 → 0.1.7
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.descriptor.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
export default Object.freeze({
|
|
2
2
|
packageVersion: 1,
|
|
3
3
|
packageId: "@jskit-ai/console-web",
|
|
4
|
-
version: "0.1.
|
|
4
|
+
version: "0.1.7",
|
|
5
5
|
kind: "runtime",
|
|
6
6
|
description: "Authenticated console surface scaffold and surface policy wiring.",
|
|
7
7
|
dependsOn: [
|
|
8
8
|
"@jskit-ai/auth-web",
|
|
9
|
+
"@jskit-ai/console-core",
|
|
9
10
|
"@jskit-ai/shell-web",
|
|
10
|
-
"@jskit-ai/users-core"
|
|
11
11
|
],
|
|
12
12
|
capabilities: {
|
|
13
13
|
provides: [
|
|
14
14
|
"console.web"
|
|
15
15
|
],
|
|
16
16
|
requires: [
|
|
17
|
-
"
|
|
17
|
+
"console.core"
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
runtime: {
|
|
@@ -37,14 +37,37 @@ export default Object.freeze({
|
|
|
37
37
|
server: [],
|
|
38
38
|
client: []
|
|
39
39
|
}
|
|
40
|
+
},
|
|
41
|
+
ui: {
|
|
42
|
+
placements: {
|
|
43
|
+
outlets: [
|
|
44
|
+
{
|
|
45
|
+
target: "console-settings:primary-menu",
|
|
46
|
+
defaultLinkComponentToken: "local.main.ui.surface-aware-menu-link-item",
|
|
47
|
+
surfaces: ["console"],
|
|
48
|
+
source: "templates/src/pages/console/settings.vue"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
contributions: [
|
|
52
|
+
{
|
|
53
|
+
id: "console.web.menu.settings",
|
|
54
|
+
target: "shell-layout:primary-menu",
|
|
55
|
+
surfaces: ["console"],
|
|
56
|
+
order: 100,
|
|
57
|
+
componentToken: "local.main.ui.menu-link-item",
|
|
58
|
+
when: "auth.authenticated === true",
|
|
59
|
+
source: "mutations.text#console-web-console-settings-placement"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
40
63
|
}
|
|
41
64
|
},
|
|
42
65
|
mutations: {
|
|
43
66
|
dependencies: {
|
|
44
67
|
runtime: {
|
|
45
|
-
"@jskit-ai/auth-web": "0.1.
|
|
46
|
-
"@jskit-ai/
|
|
47
|
-
"@jskit-ai/
|
|
68
|
+
"@jskit-ai/auth-web": "0.1.40",
|
|
69
|
+
"@jskit-ai/console-core": "0.1.2",
|
|
70
|
+
"@jskit-ai/shell-web": "0.1.38",
|
|
48
71
|
},
|
|
49
72
|
dev: {}
|
|
50
73
|
},
|
|
@@ -74,6 +97,24 @@ export default Object.freeze({
|
|
|
74
97
|
reason: "Install shell-driven console page starter.",
|
|
75
98
|
category: "console-web",
|
|
76
99
|
id: "console-web-page-console"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
from: "templates/src/pages/console/settings.vue",
|
|
103
|
+
toSurface: "console",
|
|
104
|
+
toSurfacePath: "settings.vue",
|
|
105
|
+
ownership: "app",
|
|
106
|
+
reason: "Install console settings shell route scaffold for console-web.",
|
|
107
|
+
category: "console-web",
|
|
108
|
+
id: "console-web-page-console-settings-shell"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
from: "templates/src/pages/console/settings/index.vue",
|
|
112
|
+
toSurface: "console",
|
|
113
|
+
toSurfacePath: "settings/index.vue",
|
|
114
|
+
ownership: "app",
|
|
115
|
+
reason: "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
116
|
+
category: "console-web",
|
|
117
|
+
id: "console-web-page-console-settings"
|
|
77
118
|
}
|
|
78
119
|
],
|
|
79
120
|
text: [
|
|
@@ -93,10 +134,21 @@ export default Object.freeze({
|
|
|
93
134
|
position: "bottom",
|
|
94
135
|
skipIfContains: "config.surfaceDefinitions.console = {",
|
|
95
136
|
value:
|
|
96
|
-
"\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n origin: \"\"\n};\n",
|
|
137
|
+
"\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n icon: \"mdi-console-network-outline\",\n origin: \"\"\n};\n",
|
|
97
138
|
reason: "Register console surface definition once console-web is installed.",
|
|
98
139
|
category: "console-web",
|
|
99
140
|
id: "console-web-surface-config-console"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
op: "append-text",
|
|
144
|
+
file: "src/placement.js",
|
|
145
|
+
position: "bottom",
|
|
146
|
+
skipIfContains: "id: \"console.web.menu.settings\"",
|
|
147
|
+
value:
|
|
148
|
+
"\naddPlacement({\n id: \"console.web.menu.settings\",\n target: \"shell-layout:primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"local.main.ui.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
149
|
+
reason: "Append console-web settings menu placement into app-owned placement registry.",
|
|
150
|
+
category: "console-web",
|
|
151
|
+
id: "console-web-console-settings-placement"
|
|
100
152
|
}
|
|
101
153
|
]
|
|
102
154
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/console-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@jskit-ai/auth-web": "0.1.40",
|
|
10
|
+
"@jskit-ai/console-core": "0.1.2",
|
|
11
|
+
"@jskit-ai/shell-web": "0.1.38"
|
|
7
12
|
}
|
|
8
13
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import ShellOutlet from "@jskit-ai/shell-web/client/components/ShellOutlet";
|
|
3
|
+
import { RouterView } from "vue-router";
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<section class="settings-shell d-flex flex-column ga-4">
|
|
8
|
+
<v-card rounded="lg" elevation="1" border>
|
|
9
|
+
<v-card-item>
|
|
10
|
+
<v-card-title>Console settings</v-card-title>
|
|
11
|
+
<v-card-subtitle>Global configuration and reference data for the whole app.</v-card-subtitle>
|
|
12
|
+
</v-card-item>
|
|
13
|
+
<v-divider />
|
|
14
|
+
<v-card-text class="pt-4">
|
|
15
|
+
<v-row no-gutters>
|
|
16
|
+
<v-col cols="12" md="3" lg="2" class="pr-md-4 mb-4 mb-md-0">
|
|
17
|
+
<v-list nav density="comfortable" rounded="lg" border>
|
|
18
|
+
<ShellOutlet
|
|
19
|
+
target="console-settings:primary-menu"
|
|
20
|
+
default-link-component-token="local.main.ui.surface-aware-menu-link-item"
|
|
21
|
+
/>
|
|
22
|
+
</v-list>
|
|
23
|
+
</v-col>
|
|
24
|
+
|
|
25
|
+
<v-col cols="12" md="9" lg="10">
|
|
26
|
+
<RouterView />
|
|
27
|
+
</v-col>
|
|
28
|
+
</v-row>
|
|
29
|
+
</v-card-text>
|
|
30
|
+
</v-card>
|
|
31
|
+
</section>
|
|
32
|
+
</template>
|
|
@@ -46,6 +46,24 @@ test("console-web installs console surface scripts and files", () => {
|
|
|
46
46
|
category: "console-web",
|
|
47
47
|
id: "console-web-page-console"
|
|
48
48
|
});
|
|
49
|
+
assert.deepEqual(findFileMutation("console-web-page-console-settings-shell"), {
|
|
50
|
+
from: "templates/src/pages/console/settings.vue",
|
|
51
|
+
toSurface: "console",
|
|
52
|
+
toSurfacePath: "settings.vue",
|
|
53
|
+
ownership: "app",
|
|
54
|
+
reason: "Install console settings shell route scaffold for console-web.",
|
|
55
|
+
category: "console-web",
|
|
56
|
+
id: "console-web-page-console-settings-shell"
|
|
57
|
+
});
|
|
58
|
+
assert.deepEqual(findFileMutation("console-web-page-console-settings"), {
|
|
59
|
+
from: "templates/src/pages/console/settings/index.vue",
|
|
60
|
+
toSurface: "console",
|
|
61
|
+
toSurfacePath: "settings/index.vue",
|
|
62
|
+
ownership: "app",
|
|
63
|
+
reason: "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
64
|
+
category: "console-web",
|
|
65
|
+
id: "console-web-page-console-settings"
|
|
66
|
+
});
|
|
49
67
|
});
|
|
50
68
|
|
|
51
69
|
test("console-web wires console surface policy into app config", () => {
|
|
@@ -55,13 +73,22 @@ test("console-web wires console surface policy into app config", () => {
|
|
|
55
73
|
);
|
|
56
74
|
assert.equal(findTextMutation("console-web-surface-config-console")?.file, "config/public.js");
|
|
57
75
|
assert.match(findTextMutation("console-web-surface-config-console")?.value || "", /accessPolicyId: "console_owner"/);
|
|
76
|
+
assert.match(findTextMutation("console-web-surface-config-console")?.value || "", /icon: "mdi-console-network-outline"/);
|
|
77
|
+
assert.equal(findTextMutation("console-web-console-settings-placement")?.file, "src/placement.js");
|
|
58
78
|
});
|
|
59
79
|
|
|
60
80
|
test("console-web console templates stay shell-driven", async () => {
|
|
61
81
|
const wrapperSource = await readFile(path.join(PACKAGE_DIR, "templates", "src", "pages", "console.vue"), "utf8");
|
|
62
82
|
const indexSource = await readFile(path.join(PACKAGE_DIR, "templates", "src", "pages", "console", "index.vue"), "utf8");
|
|
83
|
+
const settingsSource = await readFile(path.join(PACKAGE_DIR, "templates", "src", "pages", "console", "settings.vue"), "utf8");
|
|
84
|
+
const settingsIndexSource = await readFile(path.join(PACKAGE_DIR, "templates", "src", "pages", "console", "settings", "index.vue"), "utf8");
|
|
63
85
|
|
|
64
86
|
assert.match(wrapperSource, /ShellLayout/);
|
|
65
87
|
assert.match(wrapperSource, /"surface": "console"/);
|
|
66
88
|
assert.match(indexSource, /Operations Console/);
|
|
89
|
+
assert.match(settingsSource, /target="console-settings:primary-menu"/);
|
|
90
|
+
assert.match(settingsSource, /default-link-component-token="local\.main\.ui\.surface-aware-menu-link-item"/);
|
|
91
|
+
assert.match(settingsSource, /<RouterView \/>/);
|
|
92
|
+
assert.match(settingsIndexSource, /definePage/);
|
|
93
|
+
assert.match(settingsIndexSource, /your_child_segment/);
|
|
67
94
|
});
|