@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.
Files changed (243) hide show
  1. package/assets/images/providers/ovhcloudmks.svg +122 -0
  2. package/assets/images/providers/ovhcloudpubliccloud.svg +122 -0
  3. package/assets/styles/global/_layout.scss +99 -0
  4. package/assets/translations/en-us.yaml +30 -5
  5. package/assets/translations/zh-hans.yaml +1 -1
  6. package/babel.config.js +7 -1
  7. package/chart/monitoring/alerting/index.vue +7 -21
  8. package/chart/monitoring/grafana/index.vue +55 -0
  9. package/chart/monitoring/index.vue +51 -17
  10. package/chart/monitoring/prometheus/index.vue +37 -43
  11. package/chart/rancher-backup/index.vue +2 -1
  12. package/cloud-credential/azure.vue +4 -17
  13. package/components/Certificates.vue +164 -0
  14. package/components/CodeMirror.vue +19 -21
  15. package/components/CruResource.vue +1 -0
  16. package/components/EtcdInfoBanner.vue +1 -1
  17. package/components/ExplorerProjectsNamespaces.vue +25 -1
  18. package/components/IconOrSvg.vue +1 -1
  19. package/components/LandingPagePreference.vue +1 -4
  20. package/components/Questions/index.vue +1 -1
  21. package/components/ResourceDetail/Masthead.vue +16 -3
  22. package/components/ResourceTable.vue +14 -2
  23. package/components/ResourceYaml.vue +5 -0
  24. package/components/SideNav.vue +1 -1
  25. package/components/SingleClusterInfo.vue +1 -4
  26. package/components/Tabbed/index.vue +12 -0
  27. package/components/fleet/FleetRepos.vue +62 -27
  28. package/components/fleet/FleetResources.vue +6 -1
  29. package/components/form/ArrayListSelect.vue +10 -0
  30. package/components/form/KeyValue.vue +4 -0
  31. package/components/form/LabeledSelect.vue +4 -0
  32. package/components/formatter/Checked.vue +11 -3
  33. package/components/formatter/FleetClusterSummaryGraph.vue +27 -0
  34. package/components/formatter/FleetSummaryGraph.vue +23 -11
  35. package/components/formatter/LiveDuration.vue +1 -1
  36. package/components/formatter/PercentageBar.vue +1 -1
  37. package/components/formatter/__tests__/Checked.test.ts +19 -0
  38. package/components/nav/Group.vue +2 -2
  39. package/components/nav/Header.vue +0 -1
  40. package/components/nav/TopLevelMenu.vue +36 -6
  41. package/components/nav/Type.vue +1 -3
  42. package/components/nav/WindowManager/ContainerLogs.vue +101 -3
  43. package/components/nav/WindowManager/ContainerShell.vue +6 -1
  44. package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +186 -0
  45. package/components/nav/WindowManager/index.vue +11 -10
  46. package/components/nav/__tests__/TopLevelMenu.test.ts +33 -0
  47. package/components/nav/__tests__/Type.test.ts +1 -1
  48. package/components/nuxt/nuxt-child.js +14 -78
  49. package/components/nuxt/nuxt.js +1 -1
  50. package/{layouts → components/templates}/blank.vue +1 -1
  51. package/{layouts → components/templates}/default.vue +8 -98
  52. package/{layouts → components/templates}/error.vue +10 -19
  53. package/{layouts → components/templates}/home.vue +4 -1
  54. package/{layouts → components/templates}/plain.vue +4 -1
  55. package/{layouts → components/templates}/standalone.vue +1 -1
  56. package/{layouts → components/templates}/unauthenticated.vue +1 -1
  57. package/composables/useCompactInput.ts +20 -0
  58. package/composables/useLabeledFormElement.ts +138 -0
  59. package/config/harvester-manager-types.js +2 -0
  60. package/config/private-label.js +22 -0
  61. package/config/product/explorer.js +3 -0
  62. package/config/product/fleet.js +6 -1
  63. package/config/product/manager.js +8 -2
  64. package/config/query-params.js +1 -0
  65. package/config/router.js +385 -364
  66. package/config/settings.ts +1 -0
  67. package/config/store.js +1 -1
  68. package/config/system-namespaces.js +3 -0
  69. package/config/table-headers.js +47 -0
  70. package/core/plugin-routes.ts +56 -114
  71. package/core/plugin.ts +16 -10
  72. package/core/plugins-loader.js +7 -9
  73. package/core/plugins.js +0 -3
  74. package/creators/app/files/.gitlab-ci.yml +1 -1
  75. package/detail/fleet.cattle.io.cluster.vue +11 -1
  76. package/detail/provisioning.cattle.io.cluster.vue +4 -3
  77. package/dialog/ScaleMachineDownDialog.vue +34 -17
  78. package/edit/__tests__/service.test.ts +89 -0
  79. package/edit/auth/googleoauth.vue +1 -5
  80. package/edit/catalog.cattle.io.clusterrepo.vue +18 -0
  81. package/edit/cloudcredential.vue +2 -0
  82. package/edit/configmap.vue +2 -1
  83. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.spec.ts +1 -1
  84. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +15 -7
  85. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +112 -0
  86. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +473 -0
  87. package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.tests.ts → CustomCommand.test.ts} +4 -0
  88. package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
  89. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +73 -0
  90. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +7 -1
  91. package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +386 -0
  92. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  93. package/edit/provisioning.cattle.io.cluster/index.vue +92 -36
  94. package/edit/provisioning.cattle.io.cluster/rke2.vue +171 -583
  95. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +137 -0
  96. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +157 -0
  97. package/edit/provisioning.cattle.io.cluster/{Basics.vue → tabs/Basics.vue} +94 -19
  98. package/edit/provisioning.cattle.io.cluster/{MachinePool.vue → tabs/MachinePool.vue} +1 -0
  99. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +135 -0
  100. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +189 -0
  101. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +144 -0
  102. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +76 -0
  103. package/edit/service.vue +12 -0
  104. package/edit/workload/mixins/workload.js +1 -1
  105. package/initialize/App.js +25 -71
  106. package/initialize/client.js +21 -162
  107. package/initialize/index.js +27 -123
  108. package/list/management.cattle.io.feature.vue +1 -7
  109. package/list/node.vue +1 -0
  110. package/machine-config/__tests__/vmwarevsphere.test.ts +100 -21
  111. package/machine-config/vmwarevsphere.vue +73 -51
  112. package/middleware/authenticated.js +10 -17
  113. package/mixins/auth-config.js +2 -7
  114. package/mixins/brand.js +29 -41
  115. package/mixins/labeled-form-element.ts +6 -1
  116. package/models/__tests__/management.cattle.io.node.ts +85 -0
  117. package/models/__tests__/management.cattle.io.nodepool.ts +83 -0
  118. package/models/__tests__/namespace.test.ts +49 -9
  119. package/models/__tests__/workload.test.ts +91 -0
  120. package/models/cluster/node.js +4 -4
  121. package/models/cluster.x-k8s.io.machinedeployment.js +14 -0
  122. package/models/fleet.cattle.io.cluster.js +4 -0
  123. package/models/fleet.cattle.io.gitrepo.js +56 -13
  124. package/models/management.cattle.io.kontainerdriver.js +1 -1
  125. package/models/management.cattle.io.node.js +18 -14
  126. package/models/management.cattle.io.nodepool.js +17 -0
  127. package/models/namespace.js +1 -1
  128. package/models/pod.js +20 -0
  129. package/models/provisioning.cattle.io.cluster.js +20 -3
  130. package/models/secret.js +117 -18
  131. package/models/workload.js +16 -0
  132. package/models/workload.service.js +18 -0
  133. package/package.json +10 -9
  134. package/pages/about.vue +0 -1
  135. package/pages/account/create-key.vue +0 -1
  136. package/pages/account/index.vue +0 -1
  137. package/pages/auth/login.vue +0 -1
  138. package/pages/auth/logout.vue +0 -2
  139. package/pages/auth/setup.vue +0 -4
  140. package/pages/auth/verify.vue +14 -8
  141. package/pages/c/_cluster/apps/charts/install.vue +4 -4
  142. package/pages/c/_cluster/apps/index.vue +0 -2
  143. package/pages/c/_cluster/auth/index.vue +0 -2
  144. package/pages/c/_cluster/ecm/index.vue +0 -2
  145. package/pages/c/_cluster/explorer/index.vue +28 -2
  146. package/pages/c/_cluster/fleet/index.vue +1 -1
  147. package/pages/c/_cluster/index.vue +0 -2
  148. package/pages/c/_cluster/settings/banners.vue +0 -2
  149. package/pages/c/_cluster/settings/brand.vue +0 -2
  150. package/pages/c/_cluster/settings/index.vue +0 -2
  151. package/pages/c/_cluster/settings/links.vue +0 -1
  152. package/pages/c/_cluster/settings/performance.vue +0 -1
  153. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -1
  154. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +10 -46
  155. package/pages/c/_cluster/uiplugins/index.vue +0 -2
  156. package/pages/diagnostic.vue +1 -2
  157. package/pages/fail-whale.vue +0 -1
  158. package/pages/prefs.vue +0 -1
  159. package/pages/support/index.vue +2 -8
  160. package/pkg/auto-import.js +1 -1
  161. package/plugins/axios.js +0 -36
  162. package/plugins/back-button.js +3 -5
  163. package/plugins/codemirror-loader.js +1 -1
  164. package/plugins/codemirror.js +41 -0
  165. package/plugins/dashboard-store/__tests__/{mutations.spec.ts → mutations.test.ts} +1 -1
  166. package/plugins/dashboard-store/__tests__/resource-class.test.ts +49 -0
  167. package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +7 -0
  168. package/plugins/dashboard-store/actions.js +30 -4
  169. package/plugins/dashboard-store/classify.js +1 -18
  170. package/plugins/dashboard-store/getters.js +10 -5
  171. package/plugins/dashboard-store/index.js +0 -12
  172. package/plugins/dashboard-store/mutations.js +0 -4
  173. package/plugins/dashboard-store/resource-class.js +59 -18
  174. package/plugins/steve/__tests__/steve-class.spec.ts +59 -0
  175. package/plugins/steve/__tests__/utils/steve-mocks.ts +31 -0
  176. package/plugins/steve/getters.js +4 -1
  177. package/plugins/steve/norman-class.js +19 -0
  178. package/plugins/steve/steve-class.js +22 -0
  179. package/plugins/steve/subscribe.js +4 -10
  180. package/rancher-components/Accordion/Accordion.test.ts +45 -0
  181. package/rancher-components/Accordion/Accordion.vue +85 -0
  182. package/rancher-components/Accordion/index.ts +1 -0
  183. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +19 -2
  184. package/rancher-components/Form/LabeledInput/LabeledInput.vue +12 -1
  185. package/rancher-components/Form/Radio/RadioButton.test.ts +7 -3
  186. package/rancher-components/Form/Radio/RadioGroup.test.ts +30 -0
  187. package/rancher-components/Form/Radio/RadioGroup.vue +4 -0
  188. package/rancher-components/StringList/StringList.test.ts +270 -0
  189. package/rancher-components/StringList/StringList.vue +57 -18
  190. package/rancher-components/components/Accordion/Accordion.test.ts +45 -0
  191. package/rancher-components/components/Accordion/Accordion.vue +85 -0
  192. package/rancher-components/components/Accordion/index.ts +1 -0
  193. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +19 -2
  194. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +4 -1
  195. package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +50 -0
  196. package/scripts/extension/parse-tag-name +2 -2
  197. package/scripts/publish-shell.sh +10 -0
  198. package/scripts/test-plugins-build.sh +85 -9
  199. package/server/har-file.js +183 -0
  200. package/store/catalog.js +1 -1
  201. package/store/features.js +1 -0
  202. package/store/i18n.js +11 -0
  203. package/store/index.js +10 -11
  204. package/store/prefs.js +33 -35
  205. package/store/type-map.js +8 -7
  206. package/tsconfig.json +35 -9
  207. package/tsconfig.paths.json +18 -0
  208. package/types/shell/index.d.ts +345 -214
  209. package/utils/__tests__/create-yaml.test.ts +60 -0
  210. package/utils/axios.js +0 -19
  211. package/utils/azure.js +24 -0
  212. package/utils/create-yaml.js +17 -10
  213. package/utils/monitoring.js +1 -1
  214. package/utils/nuxt.js +18 -39
  215. package/utils/object.js +14 -0
  216. package/utils/router.scrollBehavior.js +12 -14
  217. package/utils/time.js +1 -1
  218. package/utils/url.ts +1 -1
  219. package/vue.config.js +23 -2
  220. package/.DS_Store +0 -0
  221. package/assets/images/providers/aks-black.svg +0 -28
  222. package/assets/images/providers/aks.svg +0 -31
  223. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -234
  224. package/initialize/layouts.ts +0 -26
  225. package/mixins/fetch.server.js +0 -73
  226. package/pages/c/index.vue +0 -9
  227. package/pages/rio/mesh.vue +0 -508
  228. package/plugins/transitions.js +0 -4
  229. package/scripts/.DS_Store +0 -0
  230. package/scripts/verdaccio.log +0 -205
  231. package/tsconfig.default.json +0 -46
  232. package/yarn-error.log +0 -200
  233. /package/components/form/__tests__/{NameNsDescription.ts → NameNsDescription.test.ts} +0 -0
  234. /package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.ts → selectors.test.ts} +0 -0
  235. /package/edit/provisioning.cattle.io.cluster/{AgentConfiguration.vue → tabs/AgentConfiguration.vue} +0 -0
  236. /package/edit/provisioning.cattle.io.cluster/{MemberRoles.vue → tabs/MemberRoles.vue} +0 -0
  237. /package/edit/provisioning.cattle.io.cluster/{S3Config.vue → tabs/etcd/S3Config.vue} +0 -0
  238. /package/edit/provisioning.cattle.io.cluster/{ACE.vue → tabs/networking/ACE.vue} +0 -0
  239. /package/edit/provisioning.cattle.io.cluster/{RegistryConfigs.vue → tabs/registries/RegistryConfigs.vue} +0 -0
  240. /package/edit/provisioning.cattle.io.cluster/{RegistryMirrors.vue → tabs/registries/RegistryMirrors.vue} +0 -0
  241. /package/edit/provisioning.cattle.io.cluster/{DrainOptions.vue → tabs/upgrade/DrainOptions.vue} +0 -0
  242. /package/plugins/dashboard-store/__tests__/{actions.spec.ts → actions.test.ts} +0 -0
  243. /package/plugins/dashboard-store/__tests__/{getters.spec.ts → getters.test.ts} +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  isSamePath,
20
20
  urlJoin
21
21
  } from '../utils/nuxt.js';
22
- import { createApp, NuxtError } from './index.js';
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(null, nuxt.publicRuntimeConfig).then(mountApp).catch(errorHandler); // eslint-disable-line no-undef
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
- const _Component = applySSRData(sanitizeComponent(Component), NUXT.data ? NUXT.data[index] : null);
188
+ Component._Ctor = sanitizeComponent(Component);
252
189
 
253
- match.components[key] = _Component;
190
+ match.components[key] = Component;
254
191
 
255
- return _Component;
192
+ return Component;
256
193
  });
257
194
  }
258
195
 
259
- function callMiddleware(Components, context, layout) {
196
+ function callMiddleware(Components, context) {
260
197
  let midd = ['i18n'];
261
198
  let unknownMiddleware = false;
262
199
 
263
- // If layout is undefined, only call global middleware
264
- if (typeof layout !== 'undefined') {
265
- midd = []; // Exclude global middleware if layout defined (already called before)
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
- Components.forEach((Component) => {
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
- // Default layout
346
- await callMiddleware.call(this, Components, app.context);
347
- if (nextCalled) {
348
- return;
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
- app.context.error({ statusCode: 404, message: 'This page could not be found' });
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, layout);
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
- // If layout changed
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();
@@ -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 (process.client && !globalNuxt && typeof window !== 'undefined') {
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
- Vue.use(Meta, {
109
- keyName: 'head', attribute: 'data-n-head', ssrAttribute: 'data-n-head-ssr', tagIDKeyName: 'hid'
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(ssrContext);
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 = ssrContext ? ssrContext.next : (location) => app.router.push(location);
126
+ const next = (location) => app.router.push(location);
191
127
  // Resolve route
192
- let route;
193
128
 
194
- if (ssrContext) {
195
- route = router.resolve(ssrContext.url).route;
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: app.nuxt.error.bind(app),
208
- payload: ssrContext ? ssrContext.payload : undefined,
209
- req: ssrContext ? ssrContext.req : undefined,
210
- res: ssrContext ? ssrContext.res : undefined,
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
- if (process.client) {
257
- // Replace store state before plugins execution
258
- if (window.__NUXT__ && window.__NUXT__.state) {
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 (process.client && typeof intNumber === 'function') {
215
+ if (typeof intNumber === 'function') {
297
216
  await intNumber(app.context, inject);
298
217
  }
299
218
 
300
- if (process.client && typeof positiveIntNumber === 'function') {
219
+ if (typeof positiveIntNumber === 'function') {
301
220
  await positiveIntNumber(app.context, inject);
302
221
  }
303
222
 
304
- if (process.client && typeof nuxtClientInit === 'function') {
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 (process.client && typeof plugin === 'function') {
235
+ if (typeof plugin === 'function') {
317
236
  await plugin(app.context, inject);
318
237
  }
319
238
 
320
- if (process.client && typeof codeMirror === 'function') {
239
+ if (typeof codeMirror === 'function') {
321
240
  await codeMirror(app.context, inject);
322
241
  }
323
242
 
324
- if (process.client && typeof version === 'function') {
243
+ if (typeof version === 'function') {
325
244
  await version(app.context, inject);
326
245
  }
327
246
 
328
- if (process.client && typeof steveCreateWorker === 'function') {
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
- if (process.client) {
347
- const { route } = router.resolve(app.context.route.fullPath);
254
+ const { route } = router.resolve(app.context.route.fullPath);
348
255
 
349
- if (!route.matched.length) {
350
- return resolve();
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, NuxtError };
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
- if ( process.server ) {
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}">