@rancher/shell 3.0.8-rc.8 → 3.0.8-rc.9

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 (142) hide show
  1. package/assets/brand/suse/dark/rancher-logo.svg +1 -64
  2. package/assets/translations/en-us.yaml +9 -1
  3. package/components/BackLink.vue +8 -0
  4. package/components/BannerGraphic.vue +1 -5
  5. package/components/BrandImage.vue +17 -6
  6. package/components/Cron/CronExpressionEditor.vue +1 -1
  7. package/components/Cron/CronExpressionEditorModal.vue +1 -1
  8. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +1 -0
  9. package/components/Drawer/ResourceDetailDrawer/index.vue +1 -0
  10. package/components/Drawer/ResourceDetailDrawer/types.ts +2 -1
  11. package/components/Questions/__tests__/index.test.ts +159 -0
  12. package/components/Resource/Detail/Metadata/Annotations/index.vue +2 -2
  13. package/components/Resource/Detail/Metadata/Labels/index.vue +2 -2
  14. package/components/Resource/Detail/Metadata/index.vue +3 -3
  15. package/components/Resource/Detail/composables.ts +2 -2
  16. package/components/Tabbed/__tests__/index.test.ts +86 -0
  17. package/components/auth/SelectPrincipal.vue +24 -6
  18. package/components/auth/__tests__/SelectPrincipal.test.ts +119 -0
  19. package/components/formatter/InternalExternalIP.vue +4 -1
  20. package/components/formatter/__tests__/InternalExternalIP.test.ts +1 -1
  21. package/components/templates/standalone.vue +1 -1
  22. package/composables/useI18n.ts +10 -1
  23. package/config/__test__/uiplugins.test.ts +309 -0
  24. package/config/labels-annotations.js +1 -0
  25. package/config/product/explorer.js +3 -1
  26. package/config/router/routes.js +6 -2
  27. package/config/types.js +7 -0
  28. package/config/uiplugins.js +46 -2
  29. package/core/__test__/extension-manager-impl.test.js +236 -0
  30. package/core/extension-manager-impl.js +23 -6
  31. package/core/types-provisioning.ts +1 -1
  32. package/detail/provisioning.cattle.io.cluster.vue +1 -0
  33. package/dialog/DeveloperLoadExtensionDialog.vue +12 -3
  34. package/dialog/RollbackWorkloadDialog.vue +2 -5
  35. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +2 -2
  36. package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -0
  37. package/edit/configmap.vue +1 -0
  38. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  39. package/edit/fleet.cattle.io.helmop.vue +6 -6
  40. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  41. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  42. package/edit/logging-flow/index.vue +1 -0
  43. package/edit/logging.banzaicloud.io.output/index.vue +1 -0
  44. package/edit/management.cattle.io.fleetworkspace.vue +1 -1
  45. package/edit/management.cattle.io.project.vue +1 -0
  46. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +4 -1
  47. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +2 -1
  48. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  49. package/edit/monitoring.coreos.com.receiver/index.vue +2 -1
  50. package/edit/monitoring.coreos.com.route.vue +1 -1
  51. package/edit/namespace.vue +1 -0
  52. package/edit/networking.istio.io.destinationrule/index.vue +1 -0
  53. package/edit/networking.k8s.io.ingress/index.vue +1 -0
  54. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +1 -0
  55. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -0
  56. package/edit/node.vue +1 -0
  57. package/edit/persistentvolume/index.vue +27 -22
  58. package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +13 -14
  59. package/edit/persistentvolume/plugins/azureDisk.vue +49 -48
  60. package/edit/persistentvolume/plugins/azureFile.vue +15 -14
  61. package/edit/persistentvolume/plugins/cephfs.vue +15 -14
  62. package/edit/persistentvolume/plugins/cinder.vue +15 -14
  63. package/edit/persistentvolume/plugins/csi.vue +18 -16
  64. package/edit/persistentvolume/plugins/fc.vue +13 -14
  65. package/edit/persistentvolume/plugins/flexVolume.vue +15 -14
  66. package/edit/persistentvolume/plugins/flocker.vue +1 -3
  67. package/edit/persistentvolume/plugins/gcePersistentDisk.vue +13 -14
  68. package/edit/persistentvolume/plugins/glusterfs.vue +15 -14
  69. package/edit/persistentvolume/plugins/hostPath.vue +40 -39
  70. package/edit/persistentvolume/plugins/iscsi.vue +13 -14
  71. package/edit/persistentvolume/plugins/local.vue +1 -3
  72. package/edit/persistentvolume/plugins/longhorn.vue +23 -22
  73. package/edit/persistentvolume/plugins/nfs.vue +15 -14
  74. package/edit/persistentvolume/plugins/photonPersistentDisk.vue +1 -14
  75. package/edit/persistentvolume/plugins/portworxVolume.vue +15 -14
  76. package/edit/persistentvolume/plugins/quobyte.vue +15 -14
  77. package/edit/persistentvolume/plugins/rbd.vue +15 -14
  78. package/edit/persistentvolume/plugins/scaleIO.vue +15 -14
  79. package/edit/persistentvolume/plugins/storageos.vue +15 -14
  80. package/edit/persistentvolume/plugins/vsphereVolume.vue +1 -3
  81. package/edit/provisioning.cattle.io.cluster/rke2.vue +1 -0
  82. package/edit/secret/index.vue +1 -1
  83. package/edit/service.vue +1 -0
  84. package/edit/serviceaccount.vue +1 -0
  85. package/edit/storage.k8s.io.storageclass/index.vue +1 -0
  86. package/edit/workload/index.vue +2 -1
  87. package/edit/workload/mixins/workload.js +1 -1
  88. package/initialize/App.vue +4 -4
  89. package/initialize/install-plugins.js +17 -2
  90. package/mixins/__tests__/brand.spec.ts +2 -2
  91. package/mixins/brand.js +1 -7
  92. package/mixins/create-edit-view/index.js +5 -0
  93. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +112 -5
  94. package/models/management.cattle.io.cluster.js +21 -3
  95. package/models/provisioning.cattle.io.cluster.js +21 -9
  96. package/package.json +5 -4
  97. package/pages/auth/login.vue +1 -3
  98. package/pages/c/_cluster/apps/charts/__tests__/chart.test.ts +135 -0
  99. package/pages/c/_cluster/apps/charts/chart.vue +33 -15
  100. package/pages/c/_cluster/explorer/index.vue +8 -6
  101. package/pages/c/_cluster/manager/hostedprovider/index.vue +12 -6
  102. package/pages/c/_cluster/settings/brand.vue +1 -1
  103. package/pages/c/_cluster/uiplugins/__tests__/index.test.ts +7 -0
  104. package/pages/c/_cluster/uiplugins/catalogs.vue +147 -0
  105. package/pages/c/_cluster/uiplugins/index.vue +126 -184
  106. package/plugins/dashboard-client-init.js +3 -0
  107. package/plugins/dashboard-store/getters.js +18 -1
  108. package/plugins/dashboard-store/resource-class.js +3 -2
  109. package/plugins/i18n.js +8 -0
  110. package/plugins/steve/__tests__/steve-pagination-utils.test.ts +333 -0
  111. package/plugins/steve/steve-pagination-utils.ts +39 -20
  112. package/rancher-components/Pill/RcStatusBadge/RcStatusBadge.vue +6 -42
  113. package/rancher-components/Pill/RcStatusBadge/index.ts +0 -1
  114. package/rancher-components/Pill/RcStatusBadge/types.ts +1 -1
  115. package/rancher-components/Pill/RcStatusIndicator/RcStatusIndicator.vue +5 -28
  116. package/rancher-components/Pill/RcStatusIndicator/types.ts +2 -1
  117. package/rancher-components/Pill/types.ts +0 -1
  118. package/rancher-components/RcIcon/RcIcon.test.ts +51 -0
  119. package/rancher-components/RcIcon/RcIcon.vue +46 -0
  120. package/rancher-components/RcIcon/index.ts +1 -0
  121. package/rancher-components/RcIcon/types.ts +160 -0
  122. package/rancher-components/utils/status.test.ts +67 -0
  123. package/rancher-components/utils/status.ts +77 -0
  124. package/scripts/typegen.sh +1 -0
  125. package/store/action-menu.js +8 -0
  126. package/store/auth.js +3 -3
  127. package/store/catalog.js +6 -0
  128. package/store/index.js +4 -4
  129. package/store/prefs.js +4 -5
  130. package/store/wm.ts +4 -4
  131. package/types/shell/index.d.ts +38 -2
  132. package/types/store/__tests__/pagination.types.spec.ts +137 -0
  133. package/types/store/pagination.types.ts +157 -9
  134. package/utils/__tests__/provider.test.ts +98 -0
  135. package/utils/__tests__/selector-typed.test.ts +263 -0
  136. package/utils/color.js +1 -1
  137. package/utils/dynamic-content/__tests__/info.test.ts +6 -0
  138. package/utils/dynamic-content/info.ts +43 -0
  139. package/utils/favicon.js +4 -4
  140. package/utils/provider.ts +14 -0
  141. package/utils/selector-typed.ts +6 -2
  142. package/plugins/nuxt-client-init.js +0 -3
@@ -14,47 +14,48 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
18
- const mustBeOptions = [
19
- {
20
- label: this.t('persistentVolume.hostPath.mustBe.anything'),
21
- value: ''
22
- },
23
- {
24
- label: this.t('persistentVolume.hostPath.mustBe.directory'),
25
- value: 'DirectoryOrCreate'
26
- },
27
- {
28
- label: this.t('persistentVolume.hostPath.mustBe.file'),
29
- value: 'FileOrCreate'
30
- },
31
- {
32
- label: this.t('persistentVolume.hostPath.mustBe.existingDirectory'),
33
- value: 'Directory'
34
- },
35
- {
36
- label: this.t('persistentVolume.hostPath.mustBe.existingFile'),
37
- value: 'File'
38
- },
39
- {
40
- label: this.t('persistentVolume.hostPath.mustBe.existingSocket'),
41
- value: 'Socket'
42
- },
43
- {
44
- label: this.t('persistentVolume.hostPath.mustBe.existingCharacter'),
45
- value: 'CharDevice'
46
- },
47
- {
48
- label: this.t('persistentVolume.hostPath.mustBe.existingBlock'),
49
- value: 'BlockDevice'
50
- },
51
- ];
52
-
17
+ created() {
53
18
  this.value.spec['hostPath'] = this.value.spec.hostPath || {};
54
- this.value.spec.hostPath['type'] = this.value.spec.hostPath.type || mustBeOptions[0].value;
55
-
56
- return { mustBeOptions };
19
+ this.value.spec.hostPath['type'] = this.value.spec.hostPath.type || this.mustBeOptions[0].value;
57
20
  },
21
+ computed: {
22
+ mustBeOptions() {
23
+ return [
24
+ {
25
+ label: this.t('persistentVolume.hostPath.mustBe.anything'),
26
+ value: ''
27
+ },
28
+ {
29
+ label: this.t('persistentVolume.hostPath.mustBe.directory'),
30
+ value: 'DirectoryOrCreate'
31
+ },
32
+ {
33
+ label: this.t('persistentVolume.hostPath.mustBe.file'),
34
+ value: 'FileOrCreate'
35
+ },
36
+ {
37
+ label: this.t('persistentVolume.hostPath.mustBe.existingDirectory'),
38
+ value: 'Directory'
39
+ },
40
+ {
41
+ label: this.t('persistentVolume.hostPath.mustBe.existingFile'),
42
+ value: 'File'
43
+ },
44
+ {
45
+ label: this.t('persistentVolume.hostPath.mustBe.existingSocket'),
46
+ value: 'Socket'
47
+ },
48
+ {
49
+ label: this.t('persistentVolume.hostPath.mustBe.existingCharacter'),
50
+ value: 'CharDevice'
51
+ },
52
+ {
53
+ label: this.t('persistentVolume.hostPath.mustBe.existingBlock'),
54
+ value: 'BlockDevice'
55
+ },
56
+ ];
57
+ }
58
+ }
58
59
  };
59
60
  </script>
60
61
 
@@ -17,27 +17,26 @@ export default {
17
17
  required: true,
18
18
  },
19
19
  },
20
- data() {
21
- const yesNoOptions = [
22
- {
23
- label: this.t('generic.yes'),
24
- value: true
25
- },
26
- {
27
- label: this.t('generic.no'),
28
- value: false
29
- }
30
- ];
31
-
20
+ created() {
32
21
  this.value.spec['iscsi'] = this.value.spec.iscsi || {};
33
22
  this.value.spec.iscsi['readOnly'] = this.value.spec.iscsi.readOnly || false;
34
23
  this.value.spec.iscsi['secretRef'] = this.value.spec.iscsi.secretRef || {};
35
24
  this.value.spec.iscsi['chapAuthDiscovery'] = this.value.spec.iscsi.chapAuthDiscovery || false;
36
25
  this.value.spec.iscsi['chapAuthSession'] = this.value.spec.iscsi.chapAuthSession || false;
37
-
38
- return { yesNoOptions };
39
26
  },
40
27
  computed: {
28
+ yesNoOptions() {
29
+ return [
30
+ {
31
+ label: this.t('generic.yes'),
32
+ value: true
33
+ },
34
+ {
35
+ label: this.t('generic.no'),
36
+ value: false
37
+ }
38
+ ];
39
+ },
41
40
  lun: {
42
41
  get() {
43
42
  return this.value.spec.iscsi.lun;
@@ -13,10 +13,8 @@ export default {
13
13
  required: true,
14
14
  },
15
15
  },
16
- data() {
16
+ created() {
17
17
  this.value.spec['local'] = this.value.spec.local || {};
18
-
19
- return { };
20
18
  },
21
19
  };
22
20
  </script>
@@ -5,6 +5,13 @@ import { RadioGroup } from '@components/Form/Radio';
5
5
  import { _CREATE } from '@shell/config/query-params';
6
6
  import { LONGHORN_DRIVER } from '@shell/config/types';
7
7
 
8
+ const DEFAULT_VOLUME_ATTRIBUTES = {
9
+ size: '2Gi',
10
+ numberOfReplicas: '3',
11
+ staleReplicaTimeout: '20',
12
+ fromBackup: ''
13
+ };
14
+
8
15
  export default {
9
16
  components: {
10
17
  LabeledInput, KeyValue, RadioGroup
@@ -19,33 +26,27 @@ export default {
19
26
  required: true,
20
27
  },
21
28
  },
22
- data() {
23
- const defaultVolumeAttributes = {
24
- size: '2Gi',
25
- numberOfReplicas: '3',
26
- staleReplicaTimeout: '20',
27
- fromBackup: ''
28
- };
29
-
29
+ created() {
30
30
  if (this.mode === _CREATE) {
31
31
  this.value.spec['csi'] = this.value.spec.csi || {};
32
32
  this.value.spec.csi['driver'] = LONGHORN_DRIVER;
33
33
  this.value.spec.csi['readOnly'] = this.value.spec.csi.readOnly || false;
34
- this.value.spec.csi['volumeAttributes'] = this.value.spec.csi.volumeAttributes || defaultVolumeAttributes;
34
+ this.value.spec.csi['volumeAttributes'] = this.value.spec.csi.volumeAttributes || DEFAULT_VOLUME_ATTRIBUTES;
35
+ }
36
+ },
37
+ computed: {
38
+ readOnlyOptions() {
39
+ return [
40
+ {
41
+ label: this.t('generic.yes'),
42
+ value: true
43
+ },
44
+ {
45
+ label: this.t('generic.no'),
46
+ value: false
47
+ }
48
+ ];
35
49
  }
36
-
37
- const readOnlyOptions = [
38
- {
39
- label: this.t('generic.yes'),
40
- value: true
41
- },
42
- {
43
- label: this.t('generic.no'),
44
- value: false
45
- }
46
- ];
47
-
48
- return { readOnlyOptions };
49
50
  },
50
51
  };
51
52
  </script>
@@ -14,23 +14,24 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
17
+ created() {
18
18
  this.value.spec['nfs'] = this.value.spec.nfs || {};
19
19
  this.value.spec.nfs['readOnly'] = this.value.spec.nfs.readOnly || false;
20
-
21
- const readOnlyOptions = [
22
- {
23
- label: this.t('generic.yes'),
24
- value: true
25
- },
26
- {
27
- label: this.t('generic.no'),
28
- value: false
29
- }
30
- ];
31
-
32
- return { readOnlyOptions };
33
20
  },
21
+ computed: {
22
+ readOnlyOptions() {
23
+ return [
24
+ {
25
+ label: this.t('generic.yes'),
26
+ value: true
27
+ },
28
+ {
29
+ label: this.t('generic.no'),
30
+ value: false
31
+ }
32
+ ];
33
+ }
34
+ }
34
35
  };
35
36
  </script>
36
37
 
@@ -13,23 +13,10 @@ export default {
13
13
  required: true,
14
14
  },
15
15
  },
16
- data() {
17
- const readOnlyOptions = [
18
- {
19
- label: this.t('generic.yes'),
20
- value: true
21
- },
22
- {
23
- label: this.t('generic.no'),
24
- value: false
25
- }
26
- ];
27
-
16
+ created() {
28
17
  this.value.spec['photonPersistentDisk'] = this.value.spec.photonPersistentDisk || {};
29
18
  this.value.spec.photonPersistentDisk['readOnly'] = this.value.spec.photonPersistentDisk.readOnly || false;
30
19
  this.value.spec.photonPersistentDisk['secretRef'] = this.value.spec.photonPersistentDisk.secretRef || {};
31
-
32
- return { readOnlyOptions };
33
20
  },
34
21
  };
35
22
  </script>
@@ -14,24 +14,25 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
18
- const readOnlyOptions = [
19
- {
20
- label: this.t('generic.yes'),
21
- value: true
22
- },
23
- {
24
- label: this.t('generic.no'),
25
- value: false
26
- }
27
- ];
28
-
17
+ created() {
29
18
  this.value.spec['portworxVolume'] = this.value.spec.portworxVolume || {};
30
19
  this.value.spec.portworxVolume['readOnly'] = this.value.spec.portworxVolume.readOnly || false;
31
20
  this.value.spec.portworxVolume['secretRef'] = this.value.spec.portworxVolume.secretRef || {};
32
-
33
- return { readOnlyOptions };
34
21
  },
22
+ computed: {
23
+ readOnlyOptions() {
24
+ return [
25
+ {
26
+ label: this.t('generic.yes'),
27
+ value: true
28
+ },
29
+ {
30
+ label: this.t('generic.no'),
31
+ value: false
32
+ }
33
+ ];
34
+ }
35
+ }
35
36
  };
36
37
  </script>
37
38
 
@@ -14,23 +14,24 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
18
- const readOnlyOptions = [
19
- {
20
- label: this.t('generic.yes'),
21
- value: true
22
- },
23
- {
24
- label: this.t('generic.no'),
25
- value: false
26
- }
27
- ];
28
-
17
+ created() {
29
18
  this.value.spec['quobyte'] = this.value.spec.quobyte || {};
30
19
  this.value.spec.quobyte['readOnly'] = this.value.spec.quobyte.readOnly || false;
31
-
32
- return { readOnlyOptions };
33
20
  },
21
+ computed: {
22
+ readOnlyOptions() {
23
+ return [
24
+ {
25
+ label: this.t('generic.yes'),
26
+ value: true
27
+ },
28
+ {
29
+ label: this.t('generic.no'),
30
+ value: false
31
+ }
32
+ ];
33
+ }
34
+ }
34
35
  };
35
36
  </script>
36
37
 
@@ -17,24 +17,25 @@ export default {
17
17
  required: true,
18
18
  },
19
19
  },
20
- data() {
21
- const readOnlyOptions = [
22
- {
23
- label: this.t('generic.yes'),
24
- value: true
25
- },
26
- {
27
- label: this.t('generic.no'),
28
- value: false
29
- }
30
- ];
31
-
20
+ created() {
32
21
  this.value.spec['rbd'] = this.value.spec.rbd || {};
33
22
  this.value.spec.rbd['readOnly'] = this.value.spec.rbd.readOnly || false;
34
23
  this.value.spec.rbd['secretRef'] = this.value.spec.rbd.secretRef || {};
35
-
36
- return { readOnlyOptions };
37
24
  },
25
+ computed: {
26
+ readOnlyOptions() {
27
+ return [
28
+ {
29
+ label: this.t('generic.yes'),
30
+ value: true
31
+ },
32
+ {
33
+ label: this.t('generic.no'),
34
+ value: false
35
+ }
36
+ ];
37
+ }
38
+ }
38
39
  };
39
40
  </script>
40
41
 
@@ -14,25 +14,26 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
18
- const yesNoOptions = [
19
- {
20
- label: this.t('generic.yes'),
21
- value: true
22
- },
23
- {
24
- label: this.t('generic.no'),
25
- value: false
26
- }
27
- ];
28
-
17
+ created() {
29
18
  this.value.spec['scaleIO'] = this.value.spec.scaleIO || {};
30
19
  this.value.spec.scaleIO['readOnly'] = this.value.spec.scaleIO.readOnly || false;
31
20
  this.value.spec.scaleIO['secretRef'] = this.value.spec.scaleIO.secretRef || {};
32
21
  this.value.spec.scaleIO['sslEnabled'] = this.value.spec.scaleIO.sslEnabled || false;
33
-
34
- return { yesNoOptions };
35
22
  },
23
+ computed: {
24
+ yesNoOptions() {
25
+ return [
26
+ {
27
+ label: this.t('generic.yes'),
28
+ value: true
29
+ },
30
+ {
31
+ label: this.t('generic.no'),
32
+ value: false
33
+ }
34
+ ];
35
+ }
36
+ }
36
37
  };
37
38
  </script>
38
39
 
@@ -14,24 +14,25 @@ export default {
14
14
  required: true,
15
15
  },
16
16
  },
17
- data() {
18
- const yesNoOptions = [
19
- {
20
- label: this.t('generic.yes'),
21
- value: true
22
- },
23
- {
24
- label: this.t('generic.no'),
25
- value: false
26
- }
27
- ];
28
-
17
+ created() {
29
18
  this.value.spec['storageos'] = this.value.spec.storageos || {};
30
19
  this.value.spec.storageos['readOnly'] = this.value.spec.storageos.readOnly || false;
31
20
  this.value.spec.storageos['secretRef'] = this.value.spec.storageos.secretRef || {};
32
-
33
- return { yesNoOptions };
34
21
  },
22
+ computed: {
23
+ yesNoOptions() {
24
+ return [
25
+ {
26
+ label: this.t('generic.yes'),
27
+ value: true
28
+ },
29
+ {
30
+ label: this.t('generic.no'),
31
+ value: false
32
+ }
33
+ ];
34
+ }
35
+ }
35
36
  };
36
37
  </script>
37
38
 
@@ -13,10 +13,8 @@ export default {
13
13
  required: true,
14
14
  },
15
15
  },
16
- data() {
16
+ created() {
17
17
  this.value.spec['vsphereVolume'] = this.value.spec.vsphereVolume || {};
18
-
19
- return { };
20
18
  },
21
19
  };
22
20
  </script>
@@ -2440,6 +2440,7 @@ export default {
2440
2440
  :side-tabs="true"
2441
2441
  class="min-height"
2442
2442
  :use-hash="useTabbedHash"
2443
+ :default-tab="defaultTab"
2443
2444
  @changed="handleTabChange"
2444
2445
  >
2445
2446
  <Tab
@@ -485,7 +485,7 @@ export default {
485
485
  v-else
486
486
  :side-tabs="true"
487
487
  :use-hash="useTabbedHash"
488
- default-tab="data"
488
+ :default-tab="defaultTab || 'data'"
489
489
  >
490
490
  <Tab
491
491
  name="data"
package/edit/service.vue CHANGED
@@ -351,6 +351,7 @@ export default {
351
351
  <Tabbed
352
352
  :side-tabs="true"
353
353
  :use-hash="useTabbedHash"
354
+ :default-tab="defaultTab"
354
355
  >
355
356
  <Tab
356
357
  v-if="checkTypeIs('ExternalName')"
@@ -145,6 +145,7 @@ export default {
145
145
  <Tabbed
146
146
  :side-tabs="true"
147
147
  :use-hash="useTabbedHash"
148
+ :default-tab="defaultTab"
148
149
  >
149
150
  <Tab
150
151
  name="data"
@@ -240,6 +240,7 @@ export default {
240
240
  <Tabbed
241
241
  :side-tabs="true"
242
242
  :use-hash="useTabbedHash"
243
+ :default-tab="defaultTab"
243
244
  >
244
245
  <Tab
245
246
  name="parameters"
@@ -152,9 +152,10 @@ export default {
152
152
  ref="containersTabbed"
153
153
  class="deployment-tabs"
154
154
  :show-tabs-add-remove="true"
155
- :default-tab="defaultTab"
155
+ :default-tab="defaultTab || defaultWorkloadTab"
156
156
  :flat="true"
157
157
  :use-hash="useTabbedHash"
158
+
158
159
  data-testid="workload-horizontal-tabs"
159
160
  @changed="changed"
160
161
  >
@@ -292,7 +292,7 @@ export default {
292
292
  return { general: this.fvGetPathErrors(['image'])?.length > 0 };
293
293
  },
294
294
 
295
- defaultTab() {
295
+ defaultWorkloadTab() {
296
296
  if (!!this.$route.query.sidecar || this.$route.query.init || this.mode === _CREATE) {
297
297
  const container = this.allContainers.find((c) => c.__active);
298
298
 
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import NuxtLoading from '@shell/components/nav/GlobalLoading.vue';
2
+ import GlobalLoading from '@shell/components/nav/GlobalLoading.vue';
3
3
 
4
4
  import '@shell/assets/styles/app.scss';
5
5
 
@@ -55,12 +55,12 @@ export default {
55
55
  },
56
56
  },
57
57
 
58
- components: { NuxtLoading }
58
+ components: { GlobalLoading }
59
59
  };
60
60
  </script>
61
61
  <template>
62
- <div id="__nuxt">
63
- <NuxtLoading ref="loading" />
62
+ <div id="__root">
63
+ <GlobalLoading ref="loading" />
64
64
  <div
65
65
  id="__layout"
66
66
  >
@@ -17,7 +17,7 @@ import axiosShell from '@shell/plugins/axios';
17
17
  import codeMirror from '@shell/plugins/codemirror-loader';
18
18
  import { InstallCodeMirror } from 'codemirror-editor-vue3';
19
19
  import * as intNumber from '@shell/directives/int-number';
20
- import nuxtClientInit from '@shell/plugins/nuxt-client-init';
20
+ import dashboardClientInit from '@shell/plugins/dashboard-client-init';
21
21
  import plugin from '@shell/plugins/plugin';
22
22
  import plugins from '@shell/core/plugins.js';
23
23
  import pluginsLoader from '@shell/core/plugins-loader.js';
@@ -48,7 +48,22 @@ export async function installPlugins(vueApp) {
48
48
  }
49
49
 
50
50
  export async function installInjectedPlugins(app, vueApp) {
51
- const pluginDefinitions = [config, axios, plugins, pluginsLoader, axiosShell, intNumber, codeMirror, nuxtClientInit, replaceAll, plugin, steveCreateWorker, emberCookie, internalApiPlugin, dynamicContent];
51
+ const pluginDefinitions = [
52
+ config,
53
+ axios,
54
+ plugins,
55
+ pluginsLoader,
56
+ axiosShell,
57
+ intNumber,
58
+ codeMirror,
59
+ dashboardClientInit,
60
+ replaceAll,
61
+ plugin,
62
+ steveCreateWorker,
63
+ emberCookie,
64
+ internalApiPlugin,
65
+ dynamicContent,
66
+ ];
52
67
 
53
68
  const installations = pluginDefinitions.map(async(pluginDefinition) => {
54
69
  if (typeof pluginDefinition === 'function') {
@@ -99,9 +99,9 @@ describe('brandMixin', () => {
99
99
  filters: [{
100
100
  equals: true,
101
101
  fields: [{
102
- equals: true, exact: true, exists: false, field: 'metadata.name', value: 'rancher-csp-adapter'
102
+ equality: '=', equals: true, exact: true, exists: false, field: 'metadata.name', value: 'rancher-csp-adapter'
103
103
  }, {
104
- equals: true, exact: true, exists: false, field: 'metadata.name', value: 'rancher-csp-billing-adapter'
104
+ equality: '=', equals: true, exact: true, exists: false, field: 'metadata.name', value: 'rancher-csp-billing-adapter'
105
105
  }],
106
106
  param: 'filter'
107
107
  }],
package/mixins/brand.js CHANGED
@@ -36,7 +36,7 @@ export default {
36
36
  },
37
37
 
38
38
  computed: {
39
- ...mapGetters({ loggedIn: 'auth/loggedIn' }),
39
+ ...mapGetters({ loggedIn: 'auth/loggedIn', brand: 'management/brand' }),
40
40
 
41
41
  // added to fix https://github.com/rancher/dashboard/issues/10788
42
42
  // because on logout the brand mixin is mounted, but then a management store reset happens
@@ -46,12 +46,6 @@ export default {
46
46
  return this.$store.getters['management/all'](MANAGEMENT.SETTING);
47
47
  },
48
48
 
49
- brand() {
50
- const setting = this.globalSettings?.find((gs) => gs.id === SETTING.BRAND);
51
-
52
- return setting?.value;
53
- },
54
-
55
49
  color() {
56
50
  const setting = this.globalSettings?.find((gs) => gs.id === SETTING.PRIMARY_COLOR);
57
51
 
@@ -48,6 +48,11 @@ export default defineComponent({
48
48
  useTabbedHash: {
49
49
  type: Boolean,
50
50
  default: undefined
51
+ },
52
+
53
+ defaultTab: {
54
+ type: String,
55
+ default: undefined
51
56
  }
52
57
  },
53
58
  });