@rancher/shell 0.4.0 → 0.5.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.
- package/assets/images/providers/ovhcloudmks.svg +122 -0
- package/assets/images/providers/ovhcloudpubliccloud.svg +122 -0
- package/assets/styles/global/_layout.scss +99 -0
- package/assets/translations/en-us.yaml +30 -5
- package/assets/translations/zh-hans.yaml +1 -1
- package/babel.config.js +7 -1
- package/chart/monitoring/alerting/index.vue +7 -21
- package/chart/monitoring/grafana/index.vue +55 -0
- package/chart/monitoring/index.vue +51 -17
- package/chart/monitoring/prometheus/index.vue +37 -43
- package/chart/rancher-backup/index.vue +2 -1
- package/cloud-credential/azure.vue +4 -17
- package/components/Certificates.vue +164 -0
- package/components/CodeMirror.vue +19 -21
- package/components/CruResource.vue +1 -0
- package/components/EtcdInfoBanner.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +25 -1
- package/components/IconOrSvg.vue +1 -1
- package/components/LandingPagePreference.vue +1 -4
- package/components/Questions/index.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +16 -3
- package/components/ResourceTable.vue +14 -2
- package/components/ResourceYaml.vue +5 -0
- package/components/SideNav.vue +1 -1
- package/components/SingleClusterInfo.vue +1 -4
- package/components/Tabbed/index.vue +12 -0
- package/components/fleet/FleetRepos.vue +62 -27
- package/components/fleet/FleetResources.vue +6 -1
- package/components/form/ArrayListSelect.vue +10 -0
- package/components/form/KeyValue.vue +4 -0
- package/components/form/LabeledSelect.vue +4 -0
- package/components/formatter/Checked.vue +11 -3
- package/components/formatter/FleetClusterSummaryGraph.vue +27 -0
- package/components/formatter/FleetSummaryGraph.vue +23 -11
- package/components/formatter/LiveDuration.vue +1 -1
- package/components/formatter/PercentageBar.vue +1 -1
- package/components/formatter/__tests__/Checked.test.ts +19 -0
- package/components/nav/Group.vue +2 -2
- package/components/nav/Header.vue +0 -1
- package/components/nav/TopLevelMenu.vue +36 -6
- package/components/nav/Type.vue +1 -3
- package/components/nav/WindowManager/ContainerLogs.vue +101 -3
- package/components/nav/WindowManager/ContainerShell.vue +6 -1
- package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +186 -0
- package/components/nav/WindowManager/index.vue +11 -10
- package/components/nav/__tests__/TopLevelMenu.test.ts +33 -0
- package/components/nav/__tests__/Type.test.ts +1 -1
- package/components/nuxt/nuxt-child.js +14 -78
- package/components/nuxt/nuxt.js +1 -1
- package/{layouts → components/templates}/blank.vue +1 -1
- package/{layouts → components/templates}/default.vue +8 -98
- package/{layouts → components/templates}/error.vue +10 -19
- package/{layouts → components/templates}/home.vue +4 -1
- package/{layouts → components/templates}/plain.vue +4 -1
- package/{layouts → components/templates}/standalone.vue +1 -1
- package/{layouts → components/templates}/unauthenticated.vue +1 -1
- package/composables/useCompactInput.ts +20 -0
- package/composables/useLabeledFormElement.ts +138 -0
- package/config/harvester-manager-types.js +2 -0
- package/config/private-label.js +22 -0
- package/config/product/explorer.js +3 -0
- package/config/product/fleet.js +6 -1
- package/config/product/manager.js +8 -2
- package/config/query-params.js +1 -0
- package/config/router.js +385 -364
- package/config/settings.ts +1 -0
- package/config/store.js +1 -1
- package/config/system-namespaces.js +3 -0
- package/config/table-headers.js +47 -0
- package/core/plugin-routes.ts +56 -114
- package/core/plugin.ts +16 -10
- package/core/plugins-loader.js +7 -9
- package/core/plugins.js +0 -3
- package/creators/app/files/.gitlab-ci.yml +1 -1
- package/detail/fleet.cattle.io.cluster.vue +11 -1
- package/detail/provisioning.cattle.io.cluster.vue +4 -3
- package/dialog/ScaleMachineDownDialog.vue +34 -17
- package/edit/__tests__/service.test.ts +89 -0
- package/edit/auth/googleoauth.vue +1 -5
- package/edit/catalog.cattle.io.clusterrepo.vue +18 -0
- package/edit/cloudcredential.vue +2 -0
- package/edit/configmap.vue +2 -1
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.spec.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +15 -7
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +112 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +473 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.tests.ts → CustomCommand.test.ts} +4 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +73 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +7 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +386 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +92 -36
- package/edit/provisioning.cattle.io.cluster/rke2.vue +171 -583
- package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +137 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +157 -0
- package/edit/provisioning.cattle.io.cluster/{Basics.vue → tabs/Basics.vue} +94 -19
- package/edit/provisioning.cattle.io.cluster/{MachinePool.vue → tabs/MachinePool.vue} +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +135 -0
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +189 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +144 -0
- package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +76 -0
- package/edit/service.vue +12 -0
- package/edit/workload/mixins/workload.js +1 -1
- package/initialize/App.js +25 -71
- package/initialize/client.js +21 -162
- package/initialize/index.js +27 -123
- package/list/management.cattle.io.feature.vue +1 -7
- package/list/node.vue +1 -0
- package/machine-config/__tests__/vmwarevsphere.test.ts +100 -21
- package/machine-config/vmwarevsphere.vue +73 -51
- package/middleware/authenticated.js +10 -17
- package/mixins/auth-config.js +2 -7
- package/mixins/brand.js +29 -41
- package/mixins/labeled-form-element.ts +6 -1
- package/models/__tests__/management.cattle.io.node.ts +85 -0
- package/models/__tests__/management.cattle.io.nodepool.ts +83 -0
- package/models/__tests__/namespace.test.ts +49 -9
- package/models/__tests__/workload.test.ts +91 -0
- package/models/cluster/node.js +4 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +14 -0
- package/models/fleet.cattle.io.cluster.js +4 -0
- package/models/fleet.cattle.io.gitrepo.js +56 -13
- package/models/management.cattle.io.kontainerdriver.js +1 -1
- package/models/management.cattle.io.node.js +18 -14
- package/models/management.cattle.io.nodepool.js +17 -0
- package/models/namespace.js +1 -1
- package/models/pod.js +20 -0
- package/models/provisioning.cattle.io.cluster.js +20 -3
- package/models/secret.js +117 -18
- package/models/workload.js +16 -0
- package/models/workload.service.js +18 -0
- package/package.json +10 -9
- package/pages/about.vue +0 -1
- package/pages/account/create-key.vue +0 -1
- package/pages/account/index.vue +0 -1
- package/pages/auth/login.vue +0 -1
- package/pages/auth/logout.vue +0 -2
- package/pages/auth/setup.vue +0 -4
- package/pages/auth/verify.vue +14 -8
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/apps/index.vue +0 -2
- package/pages/c/_cluster/auth/index.vue +0 -2
- package/pages/c/_cluster/ecm/index.vue +0 -2
- package/pages/c/_cluster/explorer/index.vue +28 -2
- package/pages/c/_cluster/fleet/index.vue +1 -1
- package/pages/c/_cluster/index.vue +0 -2
- package/pages/c/_cluster/settings/banners.vue +0 -2
- package/pages/c/_cluster/settings/brand.vue +0 -2
- package/pages/c/_cluster/settings/index.vue +0 -2
- package/pages/c/_cluster/settings/links.vue +0 -1
- package/pages/c/_cluster/settings/performance.vue +0 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -1
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +10 -46
- package/pages/c/_cluster/uiplugins/index.vue +0 -2
- package/pages/diagnostic.vue +1 -2
- package/pages/fail-whale.vue +0 -1
- package/pages/prefs.vue +0 -1
- package/pages/support/index.vue +2 -8
- package/pkg/auto-import.js +1 -1
- package/plugins/axios.js +0 -36
- package/plugins/back-button.js +3 -5
- package/plugins/codemirror-loader.js +1 -1
- package/plugins/codemirror.js +41 -0
- package/plugins/dashboard-store/__tests__/{mutations.spec.ts → mutations.test.ts} +1 -1
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +49 -0
- package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +7 -0
- package/plugins/dashboard-store/actions.js +30 -4
- package/plugins/dashboard-store/classify.js +1 -18
- package/plugins/dashboard-store/getters.js +10 -5
- package/plugins/dashboard-store/index.js +0 -12
- package/plugins/dashboard-store/mutations.js +0 -4
- package/plugins/dashboard-store/resource-class.js +59 -18
- package/plugins/steve/__tests__/steve-class.spec.ts +59 -0
- package/plugins/steve/__tests__/utils/steve-mocks.ts +31 -0
- package/plugins/steve/getters.js +4 -1
- package/plugins/steve/norman-class.js +19 -0
- package/plugins/steve/steve-class.js +22 -0
- package/plugins/steve/subscribe.js +4 -10
- package/rancher-components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/Accordion/Accordion.vue +85 -0
- package/rancher-components/Accordion/index.ts +1 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +19 -2
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +12 -1
- package/rancher-components/Form/Radio/RadioButton.test.ts +7 -3
- package/rancher-components/Form/Radio/RadioGroup.test.ts +30 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +4 -0
- package/rancher-components/StringList/StringList.test.ts +270 -0
- package/rancher-components/StringList/StringList.vue +57 -18
- package/rancher-components/components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/components/Accordion/Accordion.vue +85 -0
- package/rancher-components/components/Accordion/index.ts +1 -0
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +19 -2
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +4 -1
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +50 -0
- package/scripts/extension/parse-tag-name +2 -2
- package/scripts/publish-shell.sh +10 -0
- package/scripts/test-plugins-build.sh +85 -9
- package/server/har-file.js +183 -0
- package/store/catalog.js +1 -1
- package/store/features.js +1 -0
- package/store/i18n.js +11 -0
- package/store/index.js +10 -11
- package/store/prefs.js +33 -35
- package/store/type-map.js +8 -7
- package/tsconfig.json +35 -9
- package/tsconfig.paths.json +18 -0
- package/types/shell/index.d.ts +345 -214
- package/utils/__tests__/create-yaml.test.ts +60 -0
- package/utils/axios.js +0 -19
- package/utils/azure.js +24 -0
- package/utils/create-yaml.js +17 -10
- package/utils/monitoring.js +1 -1
- package/utils/nuxt.js +18 -39
- package/utils/object.js +14 -0
- package/utils/router.scrollBehavior.js +12 -14
- package/utils/time.js +1 -1
- package/utils/url.ts +1 -1
- package/vue.config.js +23 -2
- package/.DS_Store +0 -0
- package/assets/images/providers/aks-black.svg +0 -28
- package/assets/images/providers/aks.svg +0 -31
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -234
- package/initialize/layouts.ts +0 -26
- package/mixins/fetch.server.js +0 -73
- package/pages/c/index.vue +0 -9
- package/pages/rio/mesh.vue +0 -508
- package/plugins/transitions.js +0 -4
- package/scripts/.DS_Store +0 -0
- package/scripts/verdaccio.log +0 -205
- package/tsconfig.default.json +0 -46
- package/yarn-error.log +0 -200
- /package/components/form/__tests__/{NameNsDescription.ts → NameNsDescription.test.ts} +0 -0
- /package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.ts → selectors.test.ts} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{AgentConfiguration.vue → tabs/AgentConfiguration.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{MemberRoles.vue → tabs/MemberRoles.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{S3Config.vue → tabs/etcd/S3Config.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{ACE.vue → tabs/networking/ACE.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryConfigs.vue → tabs/registries/RegistryConfigs.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryMirrors.vue → tabs/registries/RegistryMirrors.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{DrainOptions.vue → tabs/upgrade/DrainOptions.vue} +0 -0
- /package/plugins/dashboard-store/__tests__/{actions.spec.ts → actions.test.ts} +0 -0
- /package/plugins/dashboard-store/__tests__/{getters.spec.ts → getters.test.ts} +0 -0
package/initialize/client.js
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
isSamePath,
|
|
20
20
|
urlJoin
|
|
21
21
|
} from '../utils/nuxt.js';
|
|
22
|
-
import { createApp
|
|
22
|
+
import { createApp } from './index.js';
|
|
23
23
|
import fetchMixin from '../mixins/fetch.client';
|
|
24
24
|
import NuxtLink from '../components/nuxt/nuxt-link.client.js'; // should be included after ./index.js
|
|
25
25
|
|
|
@@ -92,17 +92,6 @@ if (debug) {
|
|
|
92
92
|
if (nuxtApp && vm.$root[nuxtApp].error && info !== 'render function') {
|
|
93
93
|
const currentApp = vm.$root[nuxtApp];
|
|
94
94
|
|
|
95
|
-
// Load error layout
|
|
96
|
-
let layout = (NuxtError.options || NuxtError).layout;
|
|
97
|
-
|
|
98
|
-
if (typeof layout === 'function') {
|
|
99
|
-
layout = layout(currentApp.context);
|
|
100
|
-
}
|
|
101
|
-
if (layout) {
|
|
102
|
-
await currentApp.loadLayout(layout).catch(() => {});
|
|
103
|
-
}
|
|
104
|
-
currentApp.setLayout(layout);
|
|
105
|
-
|
|
106
95
|
currentApp.error(err);
|
|
107
96
|
}
|
|
108
97
|
}
|
|
@@ -126,50 +115,7 @@ if (debug) {
|
|
|
126
115
|
const errorHandler = Vue.config.errorHandler || console.error; // eslint-disable-line no-console
|
|
127
116
|
|
|
128
117
|
// Create and mount App
|
|
129
|
-
createApp(
|
|
130
|
-
|
|
131
|
-
function componentOption(component, key, ...args) {
|
|
132
|
-
if (!component || !component.options || !component.options[key]) {
|
|
133
|
-
return {};
|
|
134
|
-
}
|
|
135
|
-
const option = component.options[key];
|
|
136
|
-
|
|
137
|
-
if (typeof option === 'function') {
|
|
138
|
-
return option(...args);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return option;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
function mapTransitions(toComponents, to, from) {
|
|
145
|
-
const componentTransitions = (component) => {
|
|
146
|
-
const transition = componentOption(component, 'transition', to, from) || {};
|
|
147
|
-
|
|
148
|
-
return (typeof transition === 'string' ? { name: transition } : transition);
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
const fromComponents = from ? getMatchedComponents(from) : [];
|
|
152
|
-
const maxDepth = Math.max(toComponents.length, fromComponents.length);
|
|
153
|
-
|
|
154
|
-
const mergedTransitions = [];
|
|
155
|
-
|
|
156
|
-
for (let i = 0; i < maxDepth; i++) {
|
|
157
|
-
// Clone original objects to prevent overrides
|
|
158
|
-
const toTransitions = Object.assign({}, componentTransitions(toComponents[i]));
|
|
159
|
-
const transitions = Object.assign({}, componentTransitions(fromComponents[i]));
|
|
160
|
-
|
|
161
|
-
// Combine transitions & prefer `leave` properties of "from" route
|
|
162
|
-
Object.keys(toTransitions)
|
|
163
|
-
.filter((key) => typeof toTransitions[key] !== 'undefined' && !key.toLowerCase().includes('leave'))
|
|
164
|
-
.forEach((key) => {
|
|
165
|
-
transitions[key] = toTransitions[key];
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
mergedTransitions.push(transitions);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return mergedTransitions;
|
|
172
|
-
}
|
|
118
|
+
createApp(nuxt.publicRuntimeConfig).then(mountApp).catch(errorHandler); // eslint-disable-line no-undef
|
|
173
119
|
|
|
174
120
|
async function loadAsyncComponents(to, from, next) {
|
|
175
121
|
// Check if route changed (this._routeChanged), only if the page is not an error (for validate())
|
|
@@ -230,16 +176,6 @@ async function loadAsyncComponents(to, from, next) {
|
|
|
230
176
|
}
|
|
231
177
|
}
|
|
232
178
|
|
|
233
|
-
function applySSRData(Component, ssrData) {
|
|
234
|
-
if (NUXT.serverRendered && ssrData) {
|
|
235
|
-
applyAsyncData(Component, ssrData);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
Component._Ctor = Component;
|
|
239
|
-
|
|
240
|
-
return Component;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
179
|
// Get matched components
|
|
244
180
|
function resolveComponents(route) {
|
|
245
181
|
return flatMapComponents(route, async(Component, _, match, key, index) => {
|
|
@@ -247,32 +183,25 @@ function resolveComponents(route) {
|
|
|
247
183
|
if (typeof Component === 'function' && !Component.options) {
|
|
248
184
|
Component = await Component();
|
|
249
185
|
}
|
|
186
|
+
|
|
250
187
|
// Sanitize it and save it
|
|
251
|
-
|
|
188
|
+
Component._Ctor = sanitizeComponent(Component);
|
|
252
189
|
|
|
253
|
-
match.components[key] =
|
|
190
|
+
match.components[key] = Component;
|
|
254
191
|
|
|
255
|
-
return
|
|
192
|
+
return Component;
|
|
256
193
|
});
|
|
257
194
|
}
|
|
258
195
|
|
|
259
|
-
function callMiddleware(Components, context
|
|
196
|
+
function callMiddleware(Components, context) {
|
|
260
197
|
let midd = ['i18n'];
|
|
261
198
|
let unknownMiddleware = false;
|
|
262
199
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
layout = sanitizeComponent(layout);
|
|
267
|
-
if (layout.options.middleware) {
|
|
268
|
-
midd = midd.concat(layout.options.middleware);
|
|
200
|
+
Components.forEach((Component) => {
|
|
201
|
+
if (Component.options.middleware) {
|
|
202
|
+
midd = midd.concat(Component.options.middleware);
|
|
269
203
|
}
|
|
270
|
-
|
|
271
|
-
if (Component.options.middleware) {
|
|
272
|
-
midd = midd.concat(Component.options.middleware);
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
}
|
|
204
|
+
});
|
|
276
205
|
|
|
277
206
|
midd = midd.map((name) => {
|
|
278
207
|
if (typeof name === 'function') {
|
|
@@ -342,25 +271,20 @@ async function render(to, from, next) {
|
|
|
342
271
|
|
|
343
272
|
// If no Components matched, generate 404
|
|
344
273
|
if (!Components.length) {
|
|
345
|
-
//
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
274
|
+
// Call the authenticated middleware. This used to attempt to load the error layout but because it was missing it would:
|
|
275
|
+
// 1. load the default layout instead
|
|
276
|
+
// 2. then call the authenticated middleware
|
|
277
|
+
// 3. Authenticated middleware would then load plugins and check to see if there was a valid route and navigate to that if it existed
|
|
278
|
+
// 4. This would allow harvester cluster pages to load on page reload
|
|
279
|
+
// We should really make authenticated middleware do less...
|
|
280
|
+
await callMiddleware.call(this, [{ options: { middleware: ['authenticated'] } }], app.context);
|
|
350
281
|
|
|
351
|
-
// Load layout for error page
|
|
352
|
-
const errorLayout = (NuxtError.options || NuxtError).layout;
|
|
353
|
-
const layout = await this.loadLayout(
|
|
354
|
-
typeof errorLayout === 'function' ? errorLayout.call(NuxtError, app.context) : errorLayout
|
|
355
|
-
);
|
|
356
|
-
|
|
357
|
-
await callMiddleware.call(this, Components, app.context, layout);
|
|
358
282
|
if (nextCalled) {
|
|
359
283
|
return;
|
|
360
284
|
}
|
|
361
285
|
|
|
362
286
|
// Show error page
|
|
363
|
-
|
|
287
|
+
this.error({ statusCode: 404, message: 'This page could not be found' });
|
|
364
288
|
|
|
365
289
|
return next();
|
|
366
290
|
}
|
|
@@ -373,9 +297,6 @@ async function render(to, from, next) {
|
|
|
373
297
|
}
|
|
374
298
|
});
|
|
375
299
|
|
|
376
|
-
// Apply transitions
|
|
377
|
-
this.setTransitions(mapTransitions(Components, to, from));
|
|
378
|
-
|
|
379
300
|
try {
|
|
380
301
|
// Call middleware
|
|
381
302
|
await callMiddleware.call(this, Components, app.context);
|
|
@@ -386,16 +307,8 @@ async function render(to, from, next) {
|
|
|
386
307
|
return next();
|
|
387
308
|
}
|
|
388
309
|
|
|
389
|
-
// Set layout
|
|
390
|
-
let layout = Components[0].options.layout;
|
|
391
|
-
|
|
392
|
-
if (typeof layout === 'function') {
|
|
393
|
-
layout = layout(app.context);
|
|
394
|
-
}
|
|
395
|
-
layout = await this.loadLayout(layout);
|
|
396
|
-
|
|
397
310
|
// Call middleware for layout
|
|
398
|
-
await callMiddleware.call(this, Components, app.context
|
|
311
|
+
await callMiddleware.call(this, Components, app.context);
|
|
399
312
|
if (nextCalled) {
|
|
400
313
|
return;
|
|
401
314
|
}
|
|
@@ -536,14 +449,6 @@ async function render(to, from, next) {
|
|
|
536
449
|
|
|
537
450
|
globalHandleError(error);
|
|
538
451
|
|
|
539
|
-
// Load error layout
|
|
540
|
-
let layout = (NuxtError.options || NuxtError).layout;
|
|
541
|
-
|
|
542
|
-
if (typeof layout === 'function') {
|
|
543
|
-
layout = layout(app.context);
|
|
544
|
-
}
|
|
545
|
-
await this.loadLayout(layout);
|
|
546
|
-
|
|
547
452
|
this.error(error);
|
|
548
453
|
this.$nuxt.$emit('routeChanged', to, from, error);
|
|
549
454
|
next();
|
|
@@ -564,22 +469,6 @@ function normalizeComponents(to, ___) {
|
|
|
564
469
|
});
|
|
565
470
|
}
|
|
566
471
|
|
|
567
|
-
function setLayoutForNextPage(to) {
|
|
568
|
-
// Set layout
|
|
569
|
-
let hasError = Boolean(this.$options.nuxt.err);
|
|
570
|
-
|
|
571
|
-
if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) {
|
|
572
|
-
hasError = false;
|
|
573
|
-
}
|
|
574
|
-
let layout = hasError ? (NuxtError.options || NuxtError).layout : to.matched[0].components.default.options.layout;
|
|
575
|
-
|
|
576
|
-
if (typeof layout === 'function') {
|
|
577
|
-
layout = layout(app.context);
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
this.setLayout(layout);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
472
|
function checkForErrors(app) {
|
|
584
473
|
// Hide error component if no error
|
|
585
474
|
if (app._hadError && app._dateLastError === app.$options.nuxt.dateErr) {
|
|
@@ -723,31 +612,7 @@ function addHotReload($component, depth) {
|
|
|
723
612
|
|
|
724
613
|
callMiddleware.call(this, Components, context)
|
|
725
614
|
.then(() => {
|
|
726
|
-
|
|
727
|
-
if (depth !== 0) {
|
|
728
|
-
return;
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
let layout = Component.options.layout || 'default';
|
|
732
|
-
|
|
733
|
-
if (typeof layout === 'function') {
|
|
734
|
-
layout = layout(context);
|
|
735
|
-
}
|
|
736
|
-
if (this.layoutName === layout) {
|
|
737
|
-
return;
|
|
738
|
-
}
|
|
739
|
-
const promise = this.loadLayout(layout);
|
|
740
|
-
|
|
741
|
-
promise.then(() => {
|
|
742
|
-
this.setLayout(layout);
|
|
743
|
-
Vue.nextTick(() => hotReloadAPI(this));
|
|
744
|
-
});
|
|
745
|
-
|
|
746
|
-
return promise;
|
|
747
|
-
})
|
|
748
|
-
|
|
749
|
-
.then(() => {
|
|
750
|
-
return callMiddleware.call(this, Components, context, this.layout);
|
|
615
|
+
return callMiddleware.call(this, Components, context);
|
|
751
616
|
})
|
|
752
617
|
|
|
753
618
|
.then(() => {
|
|
@@ -795,8 +660,6 @@ async function mountApp(__app) {
|
|
|
795
660
|
// Add afterEach router hooks
|
|
796
661
|
router.afterEach(normalizeComponents);
|
|
797
662
|
|
|
798
|
-
router.afterEach(setLayoutForNextPage.bind(_app));
|
|
799
|
-
|
|
800
663
|
router.afterEach(fixPrepatch.bind(_app));
|
|
801
664
|
|
|
802
665
|
// Listen for first Vue update
|
|
@@ -814,10 +677,7 @@ async function mountApp(__app) {
|
|
|
814
677
|
// Resolve route components
|
|
815
678
|
const Components = await Promise.all(resolveComponents(app.context.route));
|
|
816
679
|
|
|
817
|
-
// Enable transitions
|
|
818
|
-
_app.setTransitions = _app.$options.nuxt.setTransitions.bind(_app);
|
|
819
680
|
if (Components.length) {
|
|
820
|
-
_app.setTransitions(mapTransitions(Components, router.currentRoute));
|
|
821
681
|
_lastPaths = router.currentRoute.matched.map((route) => compile(route.path)(router.currentRoute.params));
|
|
822
682
|
}
|
|
823
683
|
|
|
@@ -842,7 +702,6 @@ async function mountApp(__app) {
|
|
|
842
702
|
// First render on client-side
|
|
843
703
|
const clientFirstMount = () => {
|
|
844
704
|
normalizeComponents(router.currentRoute, router.currentRoute);
|
|
845
|
-
setLayoutForNextPage.call(_app, router.currentRoute);
|
|
846
705
|
checkForErrors(_app);
|
|
847
706
|
// Don't call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it's first render
|
|
848
707
|
mount();
|
package/initialize/index.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
// Taken from @nuxt/vue-app/template/index.js
|
|
2
|
+
// This file was generated during Nuxt migration
|
|
2
3
|
|
|
3
4
|
import Vue from 'vue';
|
|
4
|
-
import Meta from 'vue-meta';
|
|
5
|
-
import ClientOnly from 'vue-client-only';
|
|
6
|
-
import NoSsr from 'vue-no-ssr';
|
|
7
5
|
import { createRouter } from '../config/router.js';
|
|
8
6
|
import NuxtChild from '../components/nuxt/nuxt-child.js';
|
|
9
|
-
import NuxtError from '../layouts/error.vue';
|
|
10
7
|
import Nuxt from '../components/nuxt/nuxt.js';
|
|
11
8
|
import App from './App.js';
|
|
12
9
|
import { setContext, getLocation, getRouteData, normalizeError } from '../utils/nuxt';
|
|
@@ -22,7 +19,6 @@ import pluginsLoader from '../core/plugins-loader.js';
|
|
|
22
19
|
import axiosShell from '../plugins/axios';
|
|
23
20
|
import '../plugins/tooltip';
|
|
24
21
|
import '../plugins/v-select';
|
|
25
|
-
import '../plugins/transitions';
|
|
26
22
|
import '../plugins/vue-js-modal';
|
|
27
23
|
import '../plugins/js-yaml';
|
|
28
24
|
import '../plugins/resize';
|
|
@@ -66,23 +62,6 @@ Vue.directive = function(name) {
|
|
|
66
62
|
// prevents over-writes
|
|
67
63
|
loadDirectives();
|
|
68
64
|
|
|
69
|
-
// Component: <ClientOnly>
|
|
70
|
-
Vue.component(ClientOnly.name, ClientOnly);
|
|
71
|
-
|
|
72
|
-
// TODO: Remove in Nuxt 3: <NoSsr>
|
|
73
|
-
Vue.component(NoSsr.name, {
|
|
74
|
-
...NoSsr,
|
|
75
|
-
render(h, ctx) {
|
|
76
|
-
if (process.client && !NoSsr._warned) {
|
|
77
|
-
NoSsr._warned = true;
|
|
78
|
-
|
|
79
|
-
console.warn('<no-ssr> has been deprecated and will be removed in Nuxt 3, please use <client-only> instead'); // eslint-disable-line no-console
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return NoSsr.render(h, ctx);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
|
|
86
65
|
// Component: <NuxtChild>
|
|
87
66
|
Vue.component(NuxtChild.name, NuxtChild);
|
|
88
67
|
Vue.component('NChild', NuxtChild);
|
|
@@ -96,7 +75,7 @@ Object.defineProperty(Vue.prototype, '$nuxt', {
|
|
|
96
75
|
get() {
|
|
97
76
|
const globalNuxt = this.$root.$options.$nuxt;
|
|
98
77
|
|
|
99
|
-
if (
|
|
78
|
+
if (!globalNuxt && typeof window !== 'undefined') {
|
|
100
79
|
return window.$nuxt;
|
|
101
80
|
}
|
|
102
81
|
|
|
@@ -105,18 +84,10 @@ Object.defineProperty(Vue.prototype, '$nuxt', {
|
|
|
105
84
|
configurable: true
|
|
106
85
|
});
|
|
107
86
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
const defaultTransition = {
|
|
113
|
-
name: 'page', mode: 'out-in', appear: true, appearClass: 'appear', appearActiveClass: 'appear-active', appearToClass: 'appear-to'
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
async function createApp(ssrContext, config = {}) {
|
|
117
|
-
const router = await createRouter(ssrContext, config);
|
|
87
|
+
async function createApp(config = {}) {
|
|
88
|
+
const router = await createRouter(config);
|
|
118
89
|
|
|
119
|
-
const store = createStore(
|
|
90
|
+
const store = createStore();
|
|
120
91
|
|
|
121
92
|
// Add this.$router into store actions/mutations
|
|
122
93
|
store.$router = router;
|
|
@@ -126,40 +97,9 @@ async function createApp(ssrContext, config = {}) {
|
|
|
126
97
|
// here we inject the router and store to all child components,
|
|
127
98
|
// making them available everywhere as `this.$router` and `this.$store`.
|
|
128
99
|
const app = {
|
|
129
|
-
head: {
|
|
130
|
-
title: 'dashboard',
|
|
131
|
-
meta: [{ charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, {
|
|
132
|
-
hid: 'description', name: 'description', content: 'Rancher Dashboard'
|
|
133
|
-
}],
|
|
134
|
-
style: [],
|
|
135
|
-
script: []
|
|
136
|
-
},
|
|
137
|
-
|
|
138
100
|
store,
|
|
139
101
|
router,
|
|
140
102
|
nuxt: {
|
|
141
|
-
defaultTransition,
|
|
142
|
-
transitions: [defaultTransition],
|
|
143
|
-
setTransitions(transitions) {
|
|
144
|
-
if (!Array.isArray(transitions)) {
|
|
145
|
-
transitions = [transitions];
|
|
146
|
-
}
|
|
147
|
-
transitions = transitions.map((transition) => {
|
|
148
|
-
if (!transition) {
|
|
149
|
-
transition = defaultTransition;
|
|
150
|
-
} else if (typeof transition === 'string') {
|
|
151
|
-
transition = Object.assign({}, defaultTransition, { name: transition });
|
|
152
|
-
} else {
|
|
153
|
-
transition = Object.assign({}, defaultTransition, transition);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return transition;
|
|
157
|
-
});
|
|
158
|
-
this.$options.nuxt.transitions = transitions;
|
|
159
|
-
|
|
160
|
-
return transitions;
|
|
161
|
-
},
|
|
162
|
-
|
|
163
103
|
err: null,
|
|
164
104
|
dateErr: null,
|
|
165
105
|
error(err) {
|
|
@@ -173,10 +113,6 @@ async function createApp(ssrContext, config = {}) {
|
|
|
173
113
|
}
|
|
174
114
|
nuxt.dateErr = Date.now();
|
|
175
115
|
nuxt.err = err;
|
|
176
|
-
// Used in src/server.js
|
|
177
|
-
if (ssrContext) {
|
|
178
|
-
ssrContext.nuxt.error = err;
|
|
179
|
-
}
|
|
180
116
|
|
|
181
117
|
return err;
|
|
182
118
|
}
|
|
@@ -187,29 +123,21 @@ async function createApp(ssrContext, config = {}) {
|
|
|
187
123
|
// Make app available into store via this.app
|
|
188
124
|
store.app = app;
|
|
189
125
|
|
|
190
|
-
const next =
|
|
126
|
+
const next = (location) => app.router.push(location);
|
|
191
127
|
// Resolve route
|
|
192
|
-
let route;
|
|
193
128
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
} else {
|
|
197
|
-
const path = getLocation(router.options.base, router.options.mode);
|
|
198
|
-
|
|
199
|
-
route = router.resolve(path).route;
|
|
200
|
-
}
|
|
129
|
+
const path = getLocation(router.options.base, router.options.mode);
|
|
130
|
+
const route = router.resolve(path).route;
|
|
201
131
|
|
|
202
132
|
// Set context to app.context
|
|
203
133
|
await setContext(app, {
|
|
204
134
|
store,
|
|
205
135
|
route,
|
|
206
136
|
next,
|
|
207
|
-
error:
|
|
208
|
-
payload:
|
|
209
|
-
req:
|
|
210
|
-
res:
|
|
211
|
-
beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined,
|
|
212
|
-
ssrContext
|
|
137
|
+
error: app.nuxt.error.bind(app),
|
|
138
|
+
payload: undefined,
|
|
139
|
+
req: undefined,
|
|
140
|
+
res: undefined
|
|
213
141
|
});
|
|
214
142
|
|
|
215
143
|
function inject(key, value) {
|
|
@@ -253,20 +181,11 @@ async function createApp(ssrContext, config = {}) {
|
|
|
253
181
|
// Inject runtime config as $config
|
|
254
182
|
inject('config', config);
|
|
255
183
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
store.replaceState(window.__NUXT__.state);
|
|
260
|
-
}
|
|
184
|
+
// Replace store state before plugins execution
|
|
185
|
+
if (window.__NUXT__ && window.__NUXT__.state) {
|
|
186
|
+
store.replaceState(window.__NUXT__.state);
|
|
261
187
|
}
|
|
262
188
|
|
|
263
|
-
// Add enablePreview(previewData = {}) in context for plugins
|
|
264
|
-
if (process.static && process.client) {
|
|
265
|
-
app.context.enablePreview = function(previewData = {}) {
|
|
266
|
-
app.previewData = Object.assign({}, previewData);
|
|
267
|
-
inject('preview', previewData);
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
189
|
// Plugin execution
|
|
271
190
|
|
|
272
191
|
// if (typeof nuxt_plugin_portalvue_6babae27 === 'function') {
|
|
@@ -293,15 +212,15 @@ async function createApp(ssrContext, config = {}) {
|
|
|
293
212
|
await axiosShell(app.context, inject);
|
|
294
213
|
}
|
|
295
214
|
|
|
296
|
-
if (
|
|
215
|
+
if (typeof intNumber === 'function') {
|
|
297
216
|
await intNumber(app.context, inject);
|
|
298
217
|
}
|
|
299
218
|
|
|
300
|
-
if (
|
|
219
|
+
if (typeof positiveIntNumber === 'function') {
|
|
301
220
|
await positiveIntNumber(app.context, inject);
|
|
302
221
|
}
|
|
303
222
|
|
|
304
|
-
if (
|
|
223
|
+
if (typeof nuxtClientInit === 'function') {
|
|
305
224
|
await nuxtClientInit(app.context, inject);
|
|
306
225
|
}
|
|
307
226
|
|
|
@@ -313,43 +232,31 @@ async function createApp(ssrContext, config = {}) {
|
|
|
313
232
|
await backButton(app.context, inject);
|
|
314
233
|
}
|
|
315
234
|
|
|
316
|
-
if (
|
|
235
|
+
if (typeof plugin === 'function') {
|
|
317
236
|
await plugin(app.context, inject);
|
|
318
237
|
}
|
|
319
238
|
|
|
320
|
-
if (
|
|
239
|
+
if (typeof codeMirror === 'function') {
|
|
321
240
|
await codeMirror(app.context, inject);
|
|
322
241
|
}
|
|
323
242
|
|
|
324
|
-
if (
|
|
243
|
+
if (typeof version === 'function') {
|
|
325
244
|
await version(app.context, inject);
|
|
326
245
|
}
|
|
327
246
|
|
|
328
|
-
if (
|
|
247
|
+
if (typeof steveCreateWorker === 'function') {
|
|
329
248
|
await steveCreateWorker(app.context, inject);
|
|
330
249
|
}
|
|
331
250
|
|
|
332
|
-
// if (process.client && typeof formatters === 'function') {
|
|
333
|
-
// await formatters(app.context, inject);
|
|
334
|
-
// }
|
|
335
|
-
|
|
336
|
-
// Lock enablePreview in context
|
|
337
|
-
if (process.static && process.client) {
|
|
338
|
-
app.context.enablePreview = function() {
|
|
339
|
-
console.warn('You cannot call enablePreview() outside a plugin.'); // eslint-disable-line no-console
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
|
|
343
251
|
// Wait for async component to be resolved first
|
|
344
252
|
await new Promise((resolve, reject) => {
|
|
345
253
|
// Ignore 404s rather than blindly replacing URL in browser
|
|
346
|
-
|
|
347
|
-
const { route } = router.resolve(app.context.route.fullPath);
|
|
254
|
+
const { route } = router.resolve(app.context.route.fullPath);
|
|
348
255
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
256
|
+
if (!route.matched.length) {
|
|
257
|
+
return resolve();
|
|
352
258
|
}
|
|
259
|
+
|
|
353
260
|
router.replace(app.context.route.fullPath, resolve, (err) => {
|
|
354
261
|
// https://github.com/vuejs/vue-router/blob/v3.4.3/src/util/errors.js
|
|
355
262
|
if (!err._isRouter) {
|
|
@@ -361,9 +268,6 @@ async function createApp(ssrContext, config = {}) {
|
|
|
361
268
|
|
|
362
269
|
// navigated to a different route in router guard
|
|
363
270
|
const unregister = router.afterEach(async(to, from) => {
|
|
364
|
-
if (process.server && ssrContext && ssrContext.url) {
|
|
365
|
-
ssrContext.url = to.fullPath;
|
|
366
|
-
}
|
|
367
271
|
app.context.route = await getRouteData(to);
|
|
368
272
|
app.context.params = to.params || {};
|
|
369
273
|
app.context.query = to.query || {};
|
|
@@ -380,4 +284,4 @@ async function createApp(ssrContext, config = {}) {
|
|
|
380
284
|
};
|
|
381
285
|
}
|
|
382
286
|
|
|
383
|
-
export { createApp
|
|
287
|
+
export { createApp };
|
|
@@ -44,13 +44,7 @@ export default {
|
|
|
44
44
|
this.serverUrl = this.serverUrlSetting.value;
|
|
45
45
|
} else {
|
|
46
46
|
this.noUrlSet = true;
|
|
47
|
-
|
|
48
|
-
const { req } = this.$nuxt.context;
|
|
49
|
-
|
|
50
|
-
this.serverUrl = req.headers.host;
|
|
51
|
-
} else {
|
|
52
|
-
this.serverUrl = window.location.origin;
|
|
53
|
-
}
|
|
47
|
+
this.serverUrl = window.location.origin;
|
|
54
48
|
}
|
|
55
49
|
},
|
|
56
50
|
|
package/list/node.vue
CHANGED
|
@@ -167,6 +167,7 @@ export default {
|
|
|
167
167
|
:loading="loading"
|
|
168
168
|
:use-query-params-for-simple-filtering="useQueryParamsForSimpleFiltering"
|
|
169
169
|
:force-update-live-and-delayed="forceUpdateLiveAndDelayed"
|
|
170
|
+
data-testid="cluster-node-list"
|
|
170
171
|
v-on="$listeners"
|
|
171
172
|
>
|
|
172
173
|
<template #sub-row="{fullColspan, row, onRowMouseEnter, onRowMouseLeave}">
|