@rancher/shell 0.3.29 → 0.5.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/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 +31 -6
- package/assets/translations/zh-hans.yaml +2 -2
- 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/AsyncButton.vue +17 -5
- package/components/Certificates.vue +164 -0
- package/components/CodeMirror.vue +19 -21
- package/components/CopyCode.vue +6 -2
- package/components/CopyToClipboard.vue +2 -1
- package/components/CopyToClipboardText.vue +14 -9
- package/components/CruResource.vue +1 -0
- package/components/DraggableZone.vue +2 -2
- package/components/EtcdInfoBanner.vue +5 -5
- package/components/ExplorerProjectsNamespaces.vue +25 -1
- package/components/IconOrSvg.vue +1 -1
- package/components/LandingPagePreference.vue +1 -4
- package/components/Markdown.vue +16 -12
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/Questions/index.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +25 -9
- 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/StatusTable.vue +5 -1
- package/components/Tabbed/index.vue +12 -0
- package/components/__tests__/CopyCode.test.ts +5 -4
- package/components/fleet/FleetBundles.vue +5 -11
- package/components/fleet/FleetRepos.vue +62 -27
- package/components/fleet/FleetResources.vue +6 -1
- package/components/fleet/FleetSummary.vue +3 -3
- package/components/fleet/__tests__/FleetSummary.test.ts +316 -0
- package/components/form/ArrayListSelect.vue +10 -0
- package/components/form/Error.vue +3 -3
- package/components/form/Footer.vue +2 -2
- package/components/form/GitPicker.vue +83 -38
- package/components/form/KeyValue.vue +4 -0
- package/components/form/LabeledSelect.vue +4 -0
- package/components/form/Password.vue +3 -1
- 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 +1 -2
- 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.test.ts +36 -0
- package/composables/useCompactInput.ts +20 -0
- package/composables/useLabeledFormElement.test.ts +135 -0
- package/composables/useLabeledFormElement.ts +138 -0
- package/config/harvester-manager-types.js +2 -0
- package/config/home-links.js +1 -1
- 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-helpers.js +3 -5
- 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 +14 -0
- package/creators/app/init +19 -0
- 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/cloudcredential.vue +2 -0
- package/edit/configmap.vue +2 -1
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +12 -3
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.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} +6 -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/Upgrading.vue +3 -2
- package/edit/workload/mixins/workload.js +1 -1
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -1
- package/initialize/App.js +25 -71
- package/initialize/client.js +21 -162
- package/initialize/index.js +47 -124
- 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/create-edit-view/index.js +2 -2
- package/mixins/labeled-form-element.ts +6 -1
- package/models/__tests__/management.cattle.io.cluster.test.ts +4 -0
- 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.cluster.js +7 -3
- 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 +39 -4
- package/models/secret.js +117 -18
- package/models/workload.js +16 -0
- package/models/workload.service.js +18 -0
- package/package.json +11 -10
- 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/index.vue +64 -43
- 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/clean-html-directive.js +1 -19
- package/plugins/clean-html.js +53 -0
- package/plugins/clean-tooltip-directive.js +1 -1
- 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/index.js +11 -0
- 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 +86 -0
- package/rancher-components/Accordion/index.ts +1 -0
- package/rancher-components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/Banner/Banner.vue +2 -2
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +65 -24
- package/rancher-components/Form/Radio/RadioButton.test.ts +7 -3
- package/rancher-components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/Form/Radio/RadioGroup.test.ts +30 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +8 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/StringList/StringList.test.ts +270 -0
- package/rancher-components/StringList/StringList.vue +65 -26
- package/rancher-components/components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/components/Accordion/Accordion.vue +86 -0
- package/rancher-components/components/Accordion/index.ts +1 -0
- package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/components/Banner/Banner.vue +2 -2
- package/rancher-components/components/Card/Card.vue +3 -3
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +57 -24
- package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/components/StringList/StringList.vue +8 -8
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +50 -0
- package/scripts/extension/bundle +19 -7
- package/scripts/extension/helm/scripts/package +11 -3
- package/scripts/extension/parse-tag-name +2 -2
- package/scripts/extension/publish +20 -9
- 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 +13 -15
- package/store/prefs.js +33 -35
- package/store/type-map.js +8 -7
- package/tsconfig.json +35 -9
- package/tsconfig.paths.json +21 -0
- package/types/shell/index.d.ts +433 -234
- package/types/vue-shim.d.ts +42 -0
- package/utils/__tests__/create-yaml.test.ts +60 -0
- package/utils/axios.js +0 -19
- package/utils/azure.js +24 -0
- package/utils/clipboard.js +5 -0
- package/utils/create-yaml.js +17 -10
- package/utils/git.ts +1 -1
- 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/plugins/vue-clipboard2.js +0 -4
- 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/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.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,19 +1,16 @@
|
|
|
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';
|
|
13
10
|
import { createStore } from '../config/store.js';
|
|
14
11
|
|
|
15
12
|
/* Plugins */
|
|
16
|
-
|
|
13
|
+
import { loadDirectives } from '@shell/plugins';
|
|
17
14
|
import '../plugins/portal-vue.js';
|
|
18
15
|
import cookieUniversalNuxt from '../utils/cookie-universal-nuxt.js';
|
|
19
16
|
import axios from '../utils/axios.js';
|
|
@@ -21,12 +18,7 @@ import plugins from '../core/plugins.js';
|
|
|
21
18
|
import pluginsLoader from '../core/plugins-loader.js';
|
|
22
19
|
import axiosShell from '../plugins/axios';
|
|
23
20
|
import '../plugins/tooltip';
|
|
24
|
-
import '../plugins/clean-tooltip-directive';
|
|
25
|
-
import '../plugins/vue-clipboard2';
|
|
26
21
|
import '../plugins/v-select';
|
|
27
|
-
import '../plugins/directives';
|
|
28
|
-
import '../plugins/clean-html-directive';
|
|
29
|
-
import '../plugins/transitions';
|
|
30
22
|
import '../plugins/vue-js-modal';
|
|
31
23
|
import '../plugins/js-yaml';
|
|
32
24
|
import '../plugins/resize';
|
|
@@ -47,22 +39,28 @@ import '../plugins/formatters';
|
|
|
47
39
|
import version from '../plugins/version';
|
|
48
40
|
import steveCreateWorker from '../plugins/steve-create-worker';
|
|
49
41
|
|
|
50
|
-
//
|
|
51
|
-
Vue.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Vue.
|
|
55
|
-
...NoSsr,
|
|
56
|
-
render(h, ctx) {
|
|
57
|
-
if (process.client && !NoSsr._warned) {
|
|
58
|
-
NoSsr._warned = true;
|
|
42
|
+
// Prevent extensions from overriding existing directives
|
|
43
|
+
// Hook into Vue.directive and keep track of the directive names that have been added
|
|
44
|
+
// and prevent an existing directive from being overwritten
|
|
45
|
+
const directiveNames = {};
|
|
46
|
+
const vueDirective = Vue.directive;
|
|
59
47
|
|
|
60
|
-
|
|
61
|
-
|
|
48
|
+
Vue.directive = function(name) {
|
|
49
|
+
if (directiveNames[name]) {
|
|
50
|
+
console.log(`Can not override directive: ${ name }`); // eslint-disable-line no-console
|
|
62
51
|
|
|
63
|
-
return
|
|
52
|
+
return;
|
|
64
53
|
}
|
|
65
|
-
|
|
54
|
+
|
|
55
|
+
directiveNames[name] = true;
|
|
56
|
+
|
|
57
|
+
vueDirective.apply(Vue, arguments);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Load the directives from the plugins - we do this with a function so we know
|
|
61
|
+
// these are initialized here, after the code above which keeps track of them and
|
|
62
|
+
// prevents over-writes
|
|
63
|
+
loadDirectives();
|
|
66
64
|
|
|
67
65
|
// Component: <NuxtChild>
|
|
68
66
|
Vue.component(NuxtChild.name, NuxtChild);
|
|
@@ -77,7 +75,7 @@ Object.defineProperty(Vue.prototype, '$nuxt', {
|
|
|
77
75
|
get() {
|
|
78
76
|
const globalNuxt = this.$root.$options.$nuxt;
|
|
79
77
|
|
|
80
|
-
if (
|
|
78
|
+
if (!globalNuxt && typeof window !== 'undefined') {
|
|
81
79
|
return window.$nuxt;
|
|
82
80
|
}
|
|
83
81
|
|
|
@@ -86,18 +84,10 @@ Object.defineProperty(Vue.prototype, '$nuxt', {
|
|
|
86
84
|
configurable: true
|
|
87
85
|
});
|
|
88
86
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
87
|
+
async function createApp(config = {}) {
|
|
88
|
+
const router = await createRouter(config);
|
|
92
89
|
|
|
93
|
-
const
|
|
94
|
-
name: 'page', mode: 'out-in', appear: true, appearClass: 'appear', appearActiveClass: 'appear-active', appearToClass: 'appear-to'
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
async function createApp(ssrContext, config = {}) {
|
|
98
|
-
const router = await createRouter(ssrContext, config);
|
|
99
|
-
|
|
100
|
-
const store = createStore(ssrContext);
|
|
90
|
+
const store = createStore();
|
|
101
91
|
|
|
102
92
|
// Add this.$router into store actions/mutations
|
|
103
93
|
store.$router = router;
|
|
@@ -107,40 +97,9 @@ async function createApp(ssrContext, config = {}) {
|
|
|
107
97
|
// here we inject the router and store to all child components,
|
|
108
98
|
// making them available everywhere as `this.$router` and `this.$store`.
|
|
109
99
|
const app = {
|
|
110
|
-
head: {
|
|
111
|
-
title: 'dashboard',
|
|
112
|
-
meta: [{ charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, {
|
|
113
|
-
hid: 'description', name: 'description', content: 'Rancher Dashboard'
|
|
114
|
-
}],
|
|
115
|
-
style: [],
|
|
116
|
-
script: []
|
|
117
|
-
},
|
|
118
|
-
|
|
119
100
|
store,
|
|
120
101
|
router,
|
|
121
102
|
nuxt: {
|
|
122
|
-
defaultTransition,
|
|
123
|
-
transitions: [defaultTransition],
|
|
124
|
-
setTransitions(transitions) {
|
|
125
|
-
if (!Array.isArray(transitions)) {
|
|
126
|
-
transitions = [transitions];
|
|
127
|
-
}
|
|
128
|
-
transitions = transitions.map((transition) => {
|
|
129
|
-
if (!transition) {
|
|
130
|
-
transition = defaultTransition;
|
|
131
|
-
} else if (typeof transition === 'string') {
|
|
132
|
-
transition = Object.assign({}, defaultTransition, { name: transition });
|
|
133
|
-
} else {
|
|
134
|
-
transition = Object.assign({}, defaultTransition, transition);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return transition;
|
|
138
|
-
});
|
|
139
|
-
this.$options.nuxt.transitions = transitions;
|
|
140
|
-
|
|
141
|
-
return transitions;
|
|
142
|
-
},
|
|
143
|
-
|
|
144
103
|
err: null,
|
|
145
104
|
dateErr: null,
|
|
146
105
|
error(err) {
|
|
@@ -154,10 +113,6 @@ async function createApp(ssrContext, config = {}) {
|
|
|
154
113
|
}
|
|
155
114
|
nuxt.dateErr = Date.now();
|
|
156
115
|
nuxt.err = err;
|
|
157
|
-
// Used in src/server.js
|
|
158
|
-
if (ssrContext) {
|
|
159
|
-
ssrContext.nuxt.error = err;
|
|
160
|
-
}
|
|
161
116
|
|
|
162
117
|
return err;
|
|
163
118
|
}
|
|
@@ -168,29 +123,21 @@ async function createApp(ssrContext, config = {}) {
|
|
|
168
123
|
// Make app available into store via this.app
|
|
169
124
|
store.app = app;
|
|
170
125
|
|
|
171
|
-
const next =
|
|
126
|
+
const next = (location) => app.router.push(location);
|
|
172
127
|
// Resolve route
|
|
173
|
-
let route;
|
|
174
128
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
} else {
|
|
178
|
-
const path = getLocation(router.options.base, router.options.mode);
|
|
179
|
-
|
|
180
|
-
route = router.resolve(path).route;
|
|
181
|
-
}
|
|
129
|
+
const path = getLocation(router.options.base, router.options.mode);
|
|
130
|
+
const route = router.resolve(path).route;
|
|
182
131
|
|
|
183
132
|
// Set context to app.context
|
|
184
133
|
await setContext(app, {
|
|
185
134
|
store,
|
|
186
135
|
route,
|
|
187
136
|
next,
|
|
188
|
-
error:
|
|
189
|
-
payload:
|
|
190
|
-
req:
|
|
191
|
-
res:
|
|
192
|
-
beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined,
|
|
193
|
-
ssrContext
|
|
137
|
+
error: app.nuxt.error.bind(app),
|
|
138
|
+
payload: undefined,
|
|
139
|
+
req: undefined,
|
|
140
|
+
res: undefined
|
|
194
141
|
});
|
|
195
142
|
|
|
196
143
|
function inject(key, value) {
|
|
@@ -234,20 +181,11 @@ async function createApp(ssrContext, config = {}) {
|
|
|
234
181
|
// Inject runtime config as $config
|
|
235
182
|
inject('config', config);
|
|
236
183
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
store.replaceState(window.__NUXT__.state);
|
|
241
|
-
}
|
|
184
|
+
// Replace store state before plugins execution
|
|
185
|
+
if (window.__NUXT__ && window.__NUXT__.state) {
|
|
186
|
+
store.replaceState(window.__NUXT__.state);
|
|
242
187
|
}
|
|
243
188
|
|
|
244
|
-
// Add enablePreview(previewData = {}) in context for plugins
|
|
245
|
-
if (process.static && process.client) {
|
|
246
|
-
app.context.enablePreview = function(previewData = {}) {
|
|
247
|
-
app.previewData = Object.assign({}, previewData);
|
|
248
|
-
inject('preview', previewData);
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
189
|
// Plugin execution
|
|
252
190
|
|
|
253
191
|
// if (typeof nuxt_plugin_portalvue_6babae27 === 'function') {
|
|
@@ -274,15 +212,15 @@ async function createApp(ssrContext, config = {}) {
|
|
|
274
212
|
await axiosShell(app.context, inject);
|
|
275
213
|
}
|
|
276
214
|
|
|
277
|
-
if (
|
|
215
|
+
if (typeof intNumber === 'function') {
|
|
278
216
|
await intNumber(app.context, inject);
|
|
279
217
|
}
|
|
280
218
|
|
|
281
|
-
if (
|
|
219
|
+
if (typeof positiveIntNumber === 'function') {
|
|
282
220
|
await positiveIntNumber(app.context, inject);
|
|
283
221
|
}
|
|
284
222
|
|
|
285
|
-
if (
|
|
223
|
+
if (typeof nuxtClientInit === 'function') {
|
|
286
224
|
await nuxtClientInit(app.context, inject);
|
|
287
225
|
}
|
|
288
226
|
|
|
@@ -294,43 +232,31 @@ async function createApp(ssrContext, config = {}) {
|
|
|
294
232
|
await backButton(app.context, inject);
|
|
295
233
|
}
|
|
296
234
|
|
|
297
|
-
if (
|
|
235
|
+
if (typeof plugin === 'function') {
|
|
298
236
|
await plugin(app.context, inject);
|
|
299
237
|
}
|
|
300
238
|
|
|
301
|
-
if (
|
|
239
|
+
if (typeof codeMirror === 'function') {
|
|
302
240
|
await codeMirror(app.context, inject);
|
|
303
241
|
}
|
|
304
242
|
|
|
305
|
-
if (
|
|
243
|
+
if (typeof version === 'function') {
|
|
306
244
|
await version(app.context, inject);
|
|
307
245
|
}
|
|
308
246
|
|
|
309
|
-
if (
|
|
247
|
+
if (typeof steveCreateWorker === 'function') {
|
|
310
248
|
await steveCreateWorker(app.context, inject);
|
|
311
249
|
}
|
|
312
250
|
|
|
313
|
-
// if (process.client && typeof formatters === 'function') {
|
|
314
|
-
// await formatters(app.context, inject);
|
|
315
|
-
// }
|
|
316
|
-
|
|
317
|
-
// Lock enablePreview in context
|
|
318
|
-
if (process.static && process.client) {
|
|
319
|
-
app.context.enablePreview = function() {
|
|
320
|
-
console.warn('You cannot call enablePreview() outside a plugin.'); // eslint-disable-line no-console
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
251
|
// Wait for async component to be resolved first
|
|
325
252
|
await new Promise((resolve, reject) => {
|
|
326
253
|
// Ignore 404s rather than blindly replacing URL in browser
|
|
327
|
-
|
|
328
|
-
const { route } = router.resolve(app.context.route.fullPath);
|
|
254
|
+
const { route } = router.resolve(app.context.route.fullPath);
|
|
329
255
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
}
|
|
256
|
+
if (!route.matched.length) {
|
|
257
|
+
return resolve();
|
|
333
258
|
}
|
|
259
|
+
|
|
334
260
|
router.replace(app.context.route.fullPath, resolve, (err) => {
|
|
335
261
|
// https://github.com/vuejs/vue-router/blob/v3.4.3/src/util/errors.js
|
|
336
262
|
if (!err._isRouter) {
|
|
@@ -342,9 +268,6 @@ async function createApp(ssrContext, config = {}) {
|
|
|
342
268
|
|
|
343
269
|
// navigated to a different route in router guard
|
|
344
270
|
const unregister = router.afterEach(async(to, from) => {
|
|
345
|
-
if (process.server && ssrContext && ssrContext.url) {
|
|
346
|
-
ssrContext.url = to.fullPath;
|
|
347
|
-
}
|
|
348
271
|
app.context.route = await getRouteData(to);
|
|
349
272
|
app.context.params = to.params || {};
|
|
350
273
|
app.context.query = to.query || {};
|
|
@@ -361,4 +284,4 @@ async function createApp(ssrContext, config = {}) {
|
|
|
361
284
|
};
|
|
362
285
|
}
|
|
363
286
|
|
|
364
|
-
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}">
|