dashboard-shell-shell 3.0.5-test.12 → 3.0.5-test.14

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 (88) hide show
  1. package/assets/icons/iconfont.css +4 -1
  2. package/assets/images/pl/dark/logo.png +0 -0
  3. package/assets/styles/global/_select.scss +1 -1
  4. package/assets/styles/global/_tooltip.scss +5 -1
  5. package/assets/translations/zh-hans.yaml +5 -4
  6. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -19
  7. package/components/ExplorerMembers.vue +10 -1
  8. package/components/GlobalRoleBindings.vue +1 -58
  9. package/components/Resource/Detail/TitleBar/index.vue +26 -23
  10. package/components/ResourceDetail/Masthead/index.vue +1 -1
  11. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  12. package/components/ResourceDetail/Masthead/legacy.vue +4 -4
  13. package/components/SortableTable/index.vue +2 -2
  14. package/components/Tabbed/index.vue +5 -1
  15. package/components/auth/Principal.vue +8 -3
  16. package/components/auth/RoleDetailEdit.vue +1 -1
  17. package/components/form/ArrayList.vue +163 -147
  18. package/components/form/Command.vue +4 -5
  19. package/components/form/Footer.vue +1 -0
  20. package/components/form/HealthCheck.vue +0 -2
  21. package/components/form/HookOption.vue +83 -58
  22. package/components/form/InputWithSelect.vue +8 -7
  23. package/components/form/KeyValue.vue +16 -2
  24. package/components/form/Labels.vue +1 -1
  25. package/components/form/MatchExpressions.vue +3 -4
  26. package/components/form/NameNsDescription.vue +1 -1
  27. package/components/form/Networking.vue +0 -1
  28. package/components/form/NodeAffinity.vue +29 -28
  29. package/components/form/PodAffinity.vue +19 -21
  30. package/components/form/Probe.vue +15 -11
  31. package/components/form/ResourceQuota/NamespaceRow.vue +1 -1
  32. package/components/form/ResourceQuota/Project.vue +1 -1
  33. package/components/form/ResourceQuota/ProjectRow.vue +1 -1
  34. package/components/form/ResourceSelector.vue +1 -1
  35. package/components/form/ServiceNameSelect.vue +1 -3
  36. package/components/form/ServicePorts.vue +149 -75
  37. package/components/form/Tolerations.vue +12 -9
  38. package/components/form/ValueFromResource.vue +110 -96
  39. package/components/nav/NamespaceFilter.vue +14 -19
  40. package/components/nav/TopLevelMenu.vue +98 -125
  41. package/config/router/navigation-guards/index.js +52 -3
  42. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  43. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  44. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  45. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  46. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  47. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  48. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  49. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  50. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  51. package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
  52. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  53. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  54. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  55. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  56. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  57. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  58. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  59. package/edit/secret/index.vue +2 -2
  60. package/edit/service.vue +4 -1
  61. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  62. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  63. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  64. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  65. package/edit/workload/Job.vue +27 -29
  66. package/edit/workload/Upgrading.vue +3 -3
  67. package/edit/workload/index.vue +2 -2
  68. package/edit/workload/storage/Mount.vue +1 -0
  69. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  70. package/edit/workload/storage/azureDisk.vue +14 -10
  71. package/edit/workload/storage/azureFile.vue +9 -7
  72. package/edit/workload/storage/csi/index.vue +6 -9
  73. package/edit/workload/storage/emptyDir.vue +7 -5
  74. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  75. package/edit/workload/storage/hostPath.vue +7 -5
  76. package/edit/workload/storage/nfs.vue +8 -6
  77. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  78. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +18 -15
  79. package/edit/workload/storage/secret.vue +9 -6
  80. package/edit/workload/storage/vsphereVolume.vue +11 -7
  81. package/initialize/app-extended.js +7 -1
  82. package/package.json +1 -1
  83. package/pages/account/index.vue +90 -56
  84. package/pages/home.vue +3 -4
  85. package/rancher-components/Banner/Banner.vue +4 -1
  86. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
  87. package/store/i18n.js +1 -0
  88. package/utils/errorTranslate.json +82 -2
@@ -748,7 +748,7 @@ export default {
748
748
  data-testid="namespaces-values-label"
749
749
  class="ns-values"
750
750
  >
751
- {{ value[0].label }}
751
+ {{ value[0].label.replace('harvester', 'cloud') }}
752
752
  </div>
753
753
 
754
754
  <!-- All the selected namespaces -->
@@ -774,20 +774,18 @@ export default {
774
774
  :data-testid="`namespaces-value-${j}`"
775
775
  class="ns-value"
776
776
  >
777
- <div>{{ ns.label }}</div>
777
+ <div>{{ ns.label.replace('harvester', 'cloud') }}</div>
778
778
  <!-- block user from removing the last selection if ns forced filtering is on -->
779
- <RcButton
779
+ <i
780
780
  v-if="!namespaceFilterMode || value.length > 1"
781
781
  small
782
782
  ghost
783
- class="ns-chip-button"
783
+ class="ns-chip-button icon icon-close"
784
784
  :data-testid="`namespaces-values-close-${j}`"
785
785
  @click="removeOption(ns, $event)"
786
786
  @keydown.enter.space.stop="removeOption(ns, $event)"
787
787
  @mousedown="handleValueMouseDown(ns, $event)"
788
- >
789
- <i class="icon icon-close" />
790
- </RcButton>
788
+ />
791
789
  </div>
792
790
  </div>
793
791
 
@@ -836,19 +834,15 @@ export default {
836
834
  @click="focusFilter"
837
835
  @keydown="inputKeyHandler($event)"
838
836
  >
839
- <RcButton
837
+ <i
840
838
  v-if="hasFilter"
841
839
  small
842
840
  ghost
843
- class="ns-filter-clear"
841
+ class="ns-filter-clear icon icon-close"
844
842
  :aria-label="t('namespaceFilter.button.clearFilter')"
845
843
  @click="clearFilter"
846
844
  @keydown.enter.stop="clearFilter"
847
- >
848
- <i
849
- class="icon icon-close"
850
- />
851
- </RcButton>
845
+ />
852
846
  </div>
853
847
  <div
854
848
  v-if="namespaceFilterMode"
@@ -859,7 +853,7 @@ export default {
859
853
  class="icon icon-info"
860
854
  />
861
855
  </div>
862
- <RcButton
856
+ <div
863
857
  v-else
864
858
  small
865
859
  ghost
@@ -871,8 +865,9 @@ export default {
871
865
  >
872
866
  <i
873
867
  class="icon icon-close"
868
+ @click="clear()"
874
869
  />
875
- </RcButton>
870
+ </div>
876
871
  </div>
877
872
  <div class="ns-divider mt-0" />
878
873
  <div
@@ -889,12 +884,12 @@ export default {
889
884
  v-for="(opt, i) in cachedFiltered"
890
885
  :key="opt.id"
891
886
  >
892
- <hr
887
+ <div
893
888
  v-if="opt.kind === NAMESPACE_FILTER_KINDS.DIVIDER"
894
889
  role="separator"
895
890
  aria-orientation="horizontal"
896
891
  class="ns-divider"
897
- >
892
+ />
898
893
  <div
899
894
  v-else
900
895
  :id="opt.elementId"
@@ -919,7 +914,7 @@ export default {
919
914
  v-if="opt.kind === NAMESPACE_FILTER_KINDS.NAMESPACE"
920
915
  class="icon icon-folder"
921
916
  />
922
- <div>{{ opt.label }}</div>
917
+ <div>{{ opt.label.replace('harvester', 'cloud') }}</div>
923
918
  <i
924
919
  v-if="opt.selected"
925
920
  class="icon icon-checkmark"
@@ -52,10 +52,7 @@ export default {
52
52
  helper.update(args);
53
53
  }
54
54
 
55
- const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS') || ''
56
-
57
55
  return {
58
- topLevelPermissions,
59
56
  shown: false,
60
57
  displayVersion,
61
58
  fullVersion,
@@ -523,7 +520,7 @@ export default {
523
520
  </div>
524
521
 
525
522
  <!-- 品牌Logo -->
526
- <div v-if="topLevelPermissions && topLevelPermissions === 'superadmin'" class="side-menu-logo">
523
+ <div class="side-menu-logo">
527
524
  <BrandImage
528
525
  data-testid="side-menu__brand-img"
529
526
  :alt="t('nav.alt.mainMenuRancherLogo')"
@@ -534,7 +531,7 @@ export default {
534
531
 
535
532
  <!-- ====================== 菜单内容区 ====================== -->
536
533
  <div class="body">
537
- <div v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
534
+ <div>
538
535
 
539
536
  <!-- 首页按钮 -->
540
537
  <div @click="hide()">
@@ -650,7 +647,7 @@ export default {
650
647
  </template>
651
648
 
652
649
  <!-- ====================== 集群列表 ====================== -->
653
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin' && !!allClustersCount">
650
+ <template v-if="!!allClustersCount">
654
651
  <div
655
652
  ref="clusterList"
656
653
  class="clusters"
@@ -833,7 +830,7 @@ export default {
833
830
  </div>
834
831
  </div>
835
832
 
836
- <!-- 查看所有集群按钮 -->
833
+ <!-- See all clusters -->
837
834
  <router-link
838
835
  v-if="allClustersCount > maxClustersToShow"
839
836
  class="clusters-all"
@@ -853,128 +850,104 @@ export default {
853
850
  </template>
854
851
 
855
852
  <!-- ====================== 多集群应用区 ====================== -->
856
- <div :style="!(topLevelPermissions && topLevelPermissions === 'superadmin') ? { placeContent: 'flex-start', display: 'flex', flexDirection: 'column' } : {}" class="category">
853
+ <div class="category">
857
854
  <!-- 多集群应用 -->
858
855
  <template v-if="multiClusterApps.length">
859
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
860
- <div
861
- class="category-title"
856
+ <div
857
+ class="category-title"
858
+ >
859
+ <hr role="none">
860
+ <span>
861
+ {{ t('nav.categories.multiCluster') }}
862
+ </span>
863
+ </div>
864
+ <div
865
+ v-for="(a, i) in appBar.multiClusterApps"
866
+ :key="i"
867
+ @click="hide()"
868
+ >
869
+ <router-link
870
+ class="option"
871
+ :class="{'active-menu-link': a.isMenuActive }"
872
+ :to="a.to"
873
+ role="link"
874
+ :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
862
875
  >
863
- <hr role="none">
864
- <span>
865
- {{ t('nav.categories.multiCluster') }}
866
- </span>
867
- </div>
868
- <template v-for="(a, i) in appBar.multiClusterApps" :key="i">
869
- <div
870
- v-if="a.value === 'harvesterManager'"
871
- @click="hide()"
872
- >
873
- <router-link
874
- class="option"
875
- :class="{'active-menu-link': a.isMenuActive }"
876
- :to="a.to"
877
- role="link"
878
- :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
879
- >
880
- <IconOrSvg
881
- v-clean-tooltip="getTooltipConfig(a.label)"
882
- class="app-icon"
883
- :icon="a.icon"
884
- :src="a.svg"
885
- />
886
- <span class="option-link">{{ a.label }}</span>
887
- </router-link>
888
- </div>
889
- </template>
890
- </template>
891
- <template v-else>
892
- <template v-for="(a, i) in appBar.multiClusterApps" :key="i">
893
- <div
894
- v-if="a.value === 'harvesterManager'"
895
- @click="hide()"
896
- >
897
- <router-link
898
- class="option"
899
- :class="{'active-menu-link': a.isMenuActive }"
900
- :to="a.to"
901
- role="link"
902
- :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
903
- >
904
- <IconOrSvg
905
- v-clean-tooltip="getTooltipConfig(a.label)"
906
- class="app-icon"
907
- :icon="a.icon"
908
- :src="a.svg"
909
- />
910
- <span class="option-link">{{ a.label }}</span>
911
- </router-link>
912
- </div>
913
- </template>
914
- </template>
876
+ <IconOrSvg
877
+ v-clean-tooltip="getTooltipConfig(a.label)"
878
+ class="app-icon"
879
+ :icon="a.icon"
880
+ :src="a.svg"
881
+ />
882
+ <span class="option-link">{{ a.label }}</span>
883
+ </router-link>
884
+ </div>
915
885
  </template>
916
886
 
917
- <!-- 配置类应用 -->
918
- <div>
919
- <template v-if="configurationApps.length">
920
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
921
- <div
922
- class="category-title"
923
- >
924
- <hr role="none">
925
- <span>
926
- {{ t('nav.categories.configuration') }}
927
- </span>
928
- </div>
929
- <div
930
- v-for="(a, i) in appBar.configurationApps"
931
- :key="i"
932
- @click="hide()"
933
- >
934
- <router-link
935
- class="option"
936
- :class="{'active-menu-link': a.isMenuActive }"
937
- :to="a.to"
938
- role="link"
939
- :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
940
- >
941
- <IconOrSvg
942
- v-clean-tooltip="getTooltipConfig(a.label)"
943
- class="app-icon"
944
- :icon="a.icon"
945
- :src="a.svg"
946
- />
947
- <div>{{ a.label }}</div>
948
- </router-link>
949
- </div>
950
- </template>
951
- <template v-else>
952
- <template v-for="(a, i) in appBar.configurationApps" :key="i">
953
- <div
954
- v-if="a.value === 'settings' || a.value === 'auth'"
955
- @click="hide()"
956
- >
957
- <router-link
958
- class="option"
959
- :class="{'active-menu-link': a.isMenuActive }"
960
- :to="a.to"
961
- role="link"
962
- :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
963
- >
964
- <IconOrSvg
965
- v-clean-tooltip="getTooltipConfig(a.label)"
966
- class="app-icon"
967
- :icon="a.icon"
968
- :src="a.svg"
969
- />
970
- <div>{{ a.label }}</div>
971
- </router-link>
972
- </div>
973
- </template>
974
- </template>
975
- <div style="height: 40px;"></div>
976
- </template>
977
- </div>
887
+ <!-- Configuration apps menu -->
888
+ <template v-if="configurationApps.length">
889
+ <div
890
+ class="category-title"
891
+ >
892
+ <hr role="none">
893
+ <span>
894
+ {{ t('nav.categories.configuration') }}
895
+ </span>
896
+ </div>
897
+ <div
898
+ v-for="(a, i) in appBar.configurationApps"
899
+ :key="i"
900
+ @click="hide()"
901
+ >
902
+ <router-link
903
+ class="option"
904
+ :class="{'active-menu-link': a.isMenuActive }"
905
+ :to="a.to"
906
+ role="link"
907
+ :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
908
+ >
909
+ <IconOrSvg
910
+ v-clean-tooltip="getTooltipConfig(a.label)"
911
+ class="app-icon"
912
+ :icon="a.icon"
913
+ :src="a.svg"
914
+ />
915
+ <div>{{ a.label }}</div>
916
+ </router-link>
917
+ </div>
918
+ </template>
919
+ </div>
920
+ </div>
921
+
922
+ <!-- Footer -->
923
+ <div
924
+ class="footer"
925
+ >
926
+ <div
927
+ v-if="canEditSettings"
928
+ class="support"
929
+ @click="hide()"
930
+ >
931
+ <router-link
932
+ :to="{name: 'support'}"
933
+ role="link"
934
+ :aria-label="t('nav.ariaLabel.support')"
935
+ >
936
+ {{ t('nav.support', {hasSupport}) }}
937
+ </router-link>
938
+ </div>
939
+ <div
940
+ class="version"
941
+ :class="{'version-small': largeAboutText}"
942
+ @click="hide()"
943
+ >
944
+ <router-link
945
+ :to="{ name: 'about' }"
946
+ role="link"
947
+ :aria-label="t('nav.ariaLabel.about')"
948
+ >
949
+ {{ aboutText }}
950
+ </router-link>
978
951
  </div>
979
952
  </div>
980
953
  </div>
@@ -1644,7 +1617,7 @@ export default {
1644
1617
  }
1645
1618
 
1646
1619
  :deep() .v-popper__arrow-container {
1647
- display: none;
1620
+ display: none !important;
1648
1621
  }
1649
1622
 
1650
1623
  :deep() .v-popper:focus {
@@ -11,13 +11,62 @@ import { install as installPageTitle } from '@shell/config/router/navigation-gua
11
11
  import { install as installServerUpgradeGrowl } from '@shell/config/router/navigation-guards/server-upgrade-growl';
12
12
 
13
13
  /**
14
- * Install our router navigation guards. i.e. router.beforeEach(), router.afterEach()
14
+ * Install router navigation guards
15
+ * 1. 保留原有导航守卫顺序
16
+ * 2. 不在 beforeEach 改 params,只在 push/replace & afterEach 改 URL
15
17
  */
16
18
  export function installNavigationGuards(router, context) {
17
- // NOTE: the order of the installation matters.
18
- // Be intentional when adding, removing or modifying the guards that are installed.
19
+ // 最早执行:保证进入逻辑时 params 始终是 harvester
20
+ router.beforeEach((to, from, next) => {
21
+ let changed = false;
22
+ const params = { ...to.params };
23
+
24
+ if (params?.product?.includes('cloud')) {
25
+ params.product = params.product.replace(/cloud/g, 'harvester');
26
+ changed = true;
27
+ }
28
+
29
+ if (params?.cluster?.includes('cloud')) {
30
+ params.cluster = params.cluster.replace(/cloud/g, 'harvester');
31
+ changed = true;
32
+ }
33
+
34
+ if (params?.resource?.includes('cloud')) {
35
+ params.resource = params.resource.replace(/cloud/g, 'harvester');
36
+ changed = true;
37
+ }
38
+
39
+ if (changed) {
40
+ // 触发路由重定向
41
+ return next({ ...to, params });
42
+ }
43
+
44
+ next();
45
+ });
46
+
19
47
 
20
48
  const navigationGuardInstallers = [installLoadInitialSettings, installAttemptFirstLogin, installAuthentication, installProducts, installClusters, installRuntimeExtensionRoute, installI18N, installHandleInstallRedirect, installPageTitle, installRecordLastRoute, installServerUpgradeGrowl];
21
49
 
22
50
  navigationGuardInstallers.forEach((installer) => installer(router, context));
51
+
52
+ // 🔹 最后执行:只改地址栏,不改内部
53
+ router.afterEach((to) => {
54
+ const base = router.options.history?.base || ''; // 获取 router base,防止丢失
55
+ let cloudPath = to.fullPath.replace(/harvester/g, 'cloud');
56
+
57
+ // fullPath 可能已经不带 base,需要拼回去
58
+ if (!cloudPath.startsWith(base)) {
59
+ cloudPath = base + cloudPath;
60
+ }
61
+
62
+ // 获取当前地址栏完整 URL(path + search + hash)
63
+ const currentLocation = window.location.pathname + window.location.search + window.location.hash;
64
+
65
+ // 只有在地址栏实际不同的时候才替换,避免死循环
66
+ if (cloudPath !== currentLocation) {
67
+ console.info('[URL Replace] Updating address bar:', currentLocation, '→', cloudPath);
68
+ window.history.replaceState({}, '', cloudPath);
69
+ }
70
+ });
23
71
  }
72
+
@@ -41,7 +41,7 @@ export default {
41
41
 
42
42
  <template>
43
43
  <div>
44
- <div class="row mb-20">
44
+ <div class="row">
45
45
  <MetricTarget
46
46
  v-model:value="value.target"
47
47
  :mode="mode"
@@ -215,7 +215,7 @@ export default {
215
215
  :label="t('hpa.tabs.target')"
216
216
  :weight="10"
217
217
  >
218
- <div class="row mb-20">
218
+ <div class="row">
219
219
  <div class="col span-6">
220
220
  <LabeledSelect
221
221
  v-model:value="value.spec.scaleTargetRef"
@@ -242,6 +242,8 @@ export default {
242
242
  type="number"
243
243
  />
244
244
  </div>
245
+ </div>
246
+ <div class="row">
245
247
  <div class="col span-6">
246
248
  <LabeledInput
247
249
  v-model:value.number="value.spec.maxReplicas"
@@ -51,8 +51,8 @@ export default {
51
51
 
52
52
  <template>
53
53
  <div class="col span-12">
54
- <div class="row mb-20">
55
- <div class="col span-6">
54
+ <div class="row">
55
+ <div class="col">
56
56
  <LabeledInput
57
57
  v-model:value="value.name"
58
58
  :mode="mode"
@@ -21,9 +21,9 @@ export default {
21
21
  </script>
22
22
 
23
23
  <template>
24
- <div class="col span-12">
25
- <div class="row mb-20">
26
- <div class="col span-6">
24
+ <div class="span-12">
25
+ <div class="row">
26
+ <div class="col">
27
27
  <LabeledInput
28
28
  v-model:value="value.apiVersion"
29
29
  :mode="mode"
@@ -33,7 +33,9 @@ export default {
33
33
  type="text"
34
34
  />
35
35
  </div>
36
- <div class="col span-6">
36
+ </div>
37
+ <div class="row">
38
+ <div class="col">
37
39
  <LabeledInput
38
40
  v-model:value="value.kind"
39
41
  :mode="mode"
@@ -45,7 +47,7 @@ export default {
45
47
  </div>
46
48
  </div>
47
49
  <div class="row">
48
- <div class="col span-6">
50
+ <div class="col">
49
51
  <LabeledInput
50
52
  v-model:value="value.name"
51
53
  :mode="mode"
@@ -149,7 +149,7 @@ export default {
149
149
  <template>
150
150
  <div class="metric-target">
151
151
  <div class="row">
152
- <div class="col span-6">
152
+ <div class="col">
153
153
  <LabeledSelect
154
154
  v-model:value="value.type"
155
155
  :mode="mode"
@@ -157,9 +157,11 @@ export default {
157
157
  :options="targetTypes"
158
158
  />
159
159
  </div>
160
+ </div>
161
+ <div class="row">
160
162
  <div
161
163
  v-if="isResourceMetricType"
162
- class="col span-6"
164
+ class="col"
163
165
  >
164
166
  <UnitInput
165
167
  v-if="value.type === 'Utilization'"
@@ -197,7 +199,7 @@ export default {
197
199
  </div>
198
200
  <div
199
201
  v-else
200
- class="col span-6"
202
+ class="col"
201
203
  >
202
204
  <LabeledInput
203
205
  v-model:value="quantity"
@@ -159,8 +159,8 @@ export default {
159
159
  :label="t('hpa.warnings.resource')"
160
160
  color="warning"
161
161
  />
162
- <div class="row mb-20">
163
- <div class="col span-6">
162
+ <div class="row">
163
+ <div class="col">
164
164
  <LabeledSelect
165
165
  v-model:value="value.type"
166
166
  :reduce="(val) => val.label"
@@ -48,14 +48,14 @@ export default {
48
48
 
49
49
  <template>
50
50
  <div>
51
- <div class="row mb-20">
51
+ <div class="row">
52
52
  <MetricTarget
53
53
  v-model:value="value.target"
54
54
  :mode="mode"
55
55
  metric-resource="object"
56
56
  />
57
57
  </div>
58
- <div class="row mb-20">
58
+ <div class="row">
59
59
  <MetricObjectReference
60
60
  v-model:value="value.describedObject"
61
61
  :mode="mode"
@@ -41,7 +41,7 @@ export default {
41
41
 
42
42
  <template>
43
43
  <div>
44
- <div class="row mb-20">
44
+ <div class="row">
45
45
  <MetricTarget
46
46
  v-model:value="value.target"
47
47
  :mode="mode"
@@ -43,8 +43,8 @@ export default {
43
43
 
44
44
  <template>
45
45
  <div class="resource-metric">
46
- <div class="row mb-20">
47
- <div class="col span-6">
46
+ <div class="row">
47
+ <div class="col">
48
48
  <LabeledSelect
49
49
  v-model:value="value.name"
50
50
  :mode="mode"
@@ -89,10 +89,10 @@ export default {
89
89
 
90
90
  <template>
91
91
  <div
92
- class="cert row"
92
+ class="cert row mb-10"
93
93
  @update:value="update"
94
94
  >
95
- <div class="col span-6">
95
+ <div>
96
96
  <LabeledSelect
97
97
  v-model:value="secretVal"
98
98
  class="secret-name"
@@ -107,7 +107,9 @@ export default {
107
107
  @update:value="onSecretInput"
108
108
  />
109
109
  </div>
110
- <div class="col span-6">
110
+ </div>
111
+ <div class="row">
112
+ <div style="padding-left: 160px;">
111
113
  <ArrayList
112
114
  :value="hosts"
113
115
  :add-label="t('ingress.certificates.addHost')"
@@ -135,8 +137,8 @@ export default {
135
137
  }
136
138
 
137
139
  &:not(:last-of-type) {
138
- padding-bottom: 10px;
139
- margin-bottom: 30px;
140
+ // padding-bottom: 10px;
141
+ // margin-bottom: 30px;
140
142
  }
141
143
  }
142
144
  </style>
@@ -96,7 +96,7 @@ export default {
96
96
  v-if="serviceName || !isView"
97
97
  class="row"
98
98
  >
99
- <div class="col span-4">
99
+ <div class="col span-6">
100
100
  <LabeledSelect
101
101
  v-model:value="serviceName"
102
102
  :taggable="true"
@@ -111,7 +111,7 @@ export default {
111
111
  />
112
112
  </div>
113
113
  <div
114
- class="col span-3"
114
+ class="col span-6"
115
115
  :style="{'margin-right': '0px'}"
116
116
  >
117
117
  <LabeledInput