dashboard-shell-shell 3.0.5-test.6 → 3.0.5-test.61

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 (353) hide show
  1. package/assets/brand/csp/favicon.png +0 -0
  2. package/assets/brand/harvester/favicon.png +0 -0
  3. package/assets/brand/suse/favicon.png +0 -0
  4. package/assets/icons/demo.css +539 -0
  5. package/assets/icons/demo.css:Zone.Identifier +0 -0
  6. package/assets/icons/demo_index.html +1131 -0
  7. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.css +219 -0
  9. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  10. package/assets/icons/iconfont.js +1 -0
  11. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  12. package/assets/icons/iconfont.json +324 -0
  13. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  14. package/assets/icons/iconfont.ttf +0 -0
  15. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  16. package/assets/icons/iconfont.woff +0 -0
  17. package/assets/icons/iconfont.woff2 +0 -0
  18. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  19. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  20. package/assets/iconsNew/demo.css +539 -0
  21. package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
  22. package/assets/iconsNew/demo_index.html +303 -0
  23. package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
  24. package/assets/iconsNew/iconfont.css +43 -0
  25. package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
  26. package/assets/iconsNew/iconfont.js +1 -0
  27. package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
  28. package/assets/iconsNew/iconfont.json +44 -0
  29. package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
  30. package/assets/iconsNew/iconfont.ttf +0 -0
  31. package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
  32. package/assets/iconsNew/iconfont.woff +0 -0
  33. package/assets/iconsNew/iconfont.woff2 +0 -0
  34. package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
  35. package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
  36. package/assets/images/API.svg +3 -0
  37. package/assets/images/action.svg +6 -0
  38. package/assets/images/login/password.svg +20 -0
  39. package/assets/images/login/user.svg +6 -0
  40. package/assets/images/login-bg.png +0 -0
  41. package/assets/images/login-left.png +0 -0
  42. package/assets/images/login-logo.svg +44 -0
  43. package/assets/images/logo.png +0 -0
  44. package/assets/images/logo.svg +47 -0
  45. package/assets/images/pl/dark/logo.png +0 -0
  46. package/assets/images/pl/half-logo.svg +2 -23
  47. package/assets/images/pl/harvester.png +0 -0
  48. package/assets/images/pl/logo.png +0 -0
  49. package/assets/images/promp-yellow.svg +5 -0
  50. package/assets/images/user.png +0 -0
  51. package/assets/styles/all.scss +83 -0
  52. package/assets/styles/app.scss +5 -0
  53. package/assets/styles/base/_basic.scss +2 -2
  54. package/assets/styles/base/_helpers.scss +1 -1
  55. package/assets/styles/base/_mixins.scss +1 -1
  56. package/assets/styles/base/_typography.scss +2 -1
  57. package/assets/styles/base/_variables.scss +14 -7
  58. package/assets/styles/fonts/_icons.scss +3 -2
  59. package/assets/styles/global/_button.scss +44 -26
  60. package/assets/styles/global/_columns.scss +3 -1
  61. package/assets/styles/global/_form.scss +46 -13
  62. package/assets/styles/global/_labeled-input.scss +54 -26
  63. package/assets/styles/global/_layout.scss +8 -3
  64. package/assets/styles/global/_select.scss +25 -17
  65. package/assets/styles/global/_table.scss +7 -1
  66. package/assets/styles/global/_tooltip.scss +60 -8
  67. package/assets/styles/themes/_dark.scss +3 -0
  68. package/assets/styles/themes/_light.scss +69 -46
  69. package/assets/styles/vendor/vue-select.scss +24 -10
  70. package/assets/translations/en-us.yaml +92 -4
  71. package/assets/translations/zh-hans.yaml +668 -206
  72. package/components/ActionDropdown.vue +2 -1
  73. package/components/ActionMenu.vue +2 -2
  74. package/components/ActionMenuShell.vue +2 -0
  75. package/components/AppModal.vue +46 -5
  76. package/components/BrandImage.vue +1 -0
  77. package/components/ButtonDropdown.vue +28 -4
  78. package/components/ButtonMultiAction.vue +1 -0
  79. package/components/ClusterIconMenu.vue +2 -2
  80. package/components/CodeMirror.vue +26 -10
  81. package/components/ConsumptionGauge.vue +24 -5
  82. package/components/ContainerResourceLimit.vue +2 -2
  83. package/components/CopyToClipboard.vue +15 -0
  84. package/components/CruResource.vue +12 -10
  85. package/components/CruResourceFooter.vue +2 -2
  86. package/components/DashboardOptions.vue +29 -17
  87. package/components/DotState.vue +84 -0
  88. package/components/Drawer/Chrome.vue +2 -2
  89. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  90. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  91. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  92. package/components/ExplorerMembers.vue +28 -4
  93. package/components/ExplorerProjectsNamespaces.vue +19 -5
  94. package/components/GlobalRoleBindings.vue +23 -4
  95. package/components/GrafanaDashboard.vue +4 -4
  96. package/components/GrowlManager.vue +3 -1
  97. package/components/HardwareResourceGauge.vue +39 -3
  98. package/components/IndentedPanel.vue +4 -10
  99. package/components/InfoBox.vue +3 -3
  100. package/components/InputOrDisplay.vue +28 -2
  101. package/components/LabelValue.vue +20 -1
  102. package/components/ModalWithCard.vue +12 -3
  103. package/components/PodSecurityAdmission.vue +2 -2
  104. package/components/PromptModal.vue +1 -1
  105. package/components/PromptRemove.vue +53 -12
  106. package/components/RelatedResources.vue +3 -0
  107. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  108. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  109. package/components/Resource/Detail/Metadata/index.vue +3 -1
  110. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  111. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  112. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  113. package/components/Resource/Detail/TitleBar/index.vue +125 -27
  114. package/components/ResourceDetail/Masthead/index.vue +1 -1
  115. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  116. package/components/ResourceDetail/Masthead/legacy.vue +183 -39
  117. package/components/ResourceDetail/legacy.vue +47 -29
  118. package/components/ResourceList/Masthead.vue +222 -54
  119. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  120. package/components/ResourceTable.vue +40 -2
  121. package/components/SideNav.vue +74 -20
  122. package/components/SingleClusterInfo.vue +2 -1
  123. package/components/SortableTable/THead.vue +79 -4
  124. package/components/SortableTable/index.vue +1053 -464
  125. package/components/SortableTable/paging.js +26 -16
  126. package/components/SortableTable/selection.js +2 -2
  127. package/components/Tabbed/Tab.vue +3 -3
  128. package/components/Tabbed/index.vue +53 -30
  129. package/components/YamlEditor.vue +0 -1
  130. package/components/auth/Principal.vue +51 -19
  131. package/components/auth/RoleDetailEdit.vue +69 -14
  132. package/components/auth/SelectPrincipal.vue +1 -0
  133. package/components/breadcrumb/index.vue +119 -0
  134. package/components/form/ArrayList.vue +177 -152
  135. package/components/form/ArrayListGrouped.vue +13 -3
  136. package/components/form/ArrayListSelect.vue +1 -1
  137. package/components/form/BannerSettings.vue +64 -59
  138. package/components/form/ChangePassword.vue +5 -5
  139. package/components/form/ClusterAppearance.vue +4 -3
  140. package/components/form/ColorInput.vue +32 -8
  141. package/components/form/Command.vue +4 -5
  142. package/components/form/Conditions.vue +15 -1
  143. package/components/form/Footer.vue +12 -8
  144. package/components/form/HealthCheck.vue +0 -2
  145. package/components/form/HookOption.vue +87 -58
  146. package/components/form/InputWithSelect.vue +8 -4
  147. package/components/form/KeyValue.vue +66 -8
  148. package/components/form/LabeledSelect.vue +216 -242
  149. package/components/form/Labels.vue +4 -4
  150. package/components/form/MatchExpressions.vue +28 -11
  151. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  152. package/components/form/Members/ClusterPermissionsEditor.vue +61 -43
  153. package/components/form/Members/MembershipEditor.vue +4 -4
  154. package/components/form/Members/ProjectMembershipEditor.vue +1 -1
  155. package/components/form/NameNsDescription.vue +62 -22
  156. package/components/form/Networking.vue +6 -9
  157. package/components/form/NodeAffinity.vue +29 -28
  158. package/components/form/Password.vue +16 -7
  159. package/components/form/PodAffinity.vue +24 -25
  160. package/components/form/Probe.vue +15 -11
  161. package/components/form/ProjectMemberEditor.vue +66 -48
  162. package/components/form/ResourceQuota/Namespace.vue +4 -4
  163. package/components/form/ResourceQuota/NamespaceRow.vue +26 -23
  164. package/components/form/ResourceQuota/Project.vue +4 -4
  165. package/components/form/ResourceQuota/ProjectRow.vue +38 -35
  166. package/components/form/ResourceSelector.vue +1 -1
  167. package/components/form/SecretSelector.vue +24 -23
  168. package/components/form/Security.vue +1 -3
  169. package/components/form/Select.vue +12 -3
  170. package/components/form/ServiceNameSelect.vue +2 -5
  171. package/components/form/ServicePorts.vue +149 -75
  172. package/components/form/SimpleSecretSelector.vue +29 -9
  173. package/components/form/Taints.vue +2 -1
  174. package/components/form/Tolerations.vue +13 -9
  175. package/components/form/UnitInput.vue +8 -3
  176. package/components/form/ValueFromResource.vue +110 -96
  177. package/components/form/WorkloadPorts.vue +143 -123
  178. package/components/formatter/BadgeStateFormatter.vue +8 -5
  179. package/components/formatter/LiveDate.vue +3 -3
  180. package/components/formatter/WorkloadHealthScale.vue +4 -3
  181. package/components/nav/Favorite.vue +5 -1
  182. package/components/nav/Group.vue +139 -99
  183. package/components/nav/Header.vue +138 -164
  184. package/components/nav/HeaderPageActionMenu.vue +1 -0
  185. package/components/nav/NamespaceFilter.vue +34 -36
  186. package/components/nav/TopLevelMenu.vue +62 -25
  187. package/components/nav/Type.vue +73 -43
  188. package/composables/useClickOutside.ts +1 -1
  189. package/config/menuRouteMap.js +10 -0
  190. package/config/private-label.js +14 -11
  191. package/config/product/auth.js +17 -7
  192. package/config/product/explorer.js +32 -10
  193. package/config/product/manager.js +28 -17
  194. package/config/product/settings.js +19 -9
  195. package/config/product/uiplugins.js +13 -10
  196. package/config/router/navigation-guards/index.js +61 -3
  197. package/config/settings.ts +28 -0
  198. package/config/table-headers.js +3 -2
  199. package/detail/node.vue +28 -23
  200. package/dialog/AddCustomBadgeDialog.vue +17 -9
  201. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  202. package/dialog/RollbackWorkloadDialog.vue +1 -1
  203. package/dialog/ScalePoolDownDialog.vue +2 -2
  204. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  205. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  206. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  207. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  208. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  209. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  210. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  211. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  212. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  213. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  214. package/edit/configmap.vue +4 -0
  215. package/edit/logging-flow/index.vue +1 -2
  216. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
  217. package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
  218. package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
  219. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
  220. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
  221. package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
  222. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
  223. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
  224. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
  225. package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
  226. package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
  227. package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
  228. package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
  229. package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
  230. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
  231. package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
  232. package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
  233. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
  234. package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
  235. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
  236. package/edit/management.cattle.io.user.vue +17 -4
  237. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  238. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +50 -26
  239. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  240. package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +32 -0
  241. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  242. package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +52 -0
  243. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  244. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  245. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  246. package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +45 -0
  247. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  248. package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +31 -0
  249. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  250. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  251. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  252. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  253. package/edit/namespace.vue +1 -2
  254. package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
  255. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  256. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  257. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  258. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  259. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  260. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  261. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  262. package/edit/persistentvolume/index.vue +3 -1
  263. package/edit/persistentvolumeclaim.vue +2 -0
  264. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +1 -1
  265. package/edit/secret/index.vue +2 -2
  266. package/edit/service.vue +4 -1
  267. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  268. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  269. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  270. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  271. package/edit/token.vue +31 -12
  272. package/edit/workload/Job.vue +31 -34
  273. package/edit/workload/Upgrading.vue +5 -5
  274. package/edit/workload/index.vue +22 -18
  275. package/edit/workload/storage/Mount.vue +1 -0
  276. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  277. package/edit/workload/storage/azureDisk.vue +14 -10
  278. package/edit/workload/storage/azureFile.vue +9 -7
  279. package/edit/workload/storage/csi/index.vue +6 -9
  280. package/edit/workload/storage/emptyDir.vue +7 -5
  281. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  282. package/edit/workload/storage/hostPath.vue +7 -5
  283. package/edit/workload/storage/nfs.vue +8 -6
  284. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  285. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  286. package/edit/workload/storage/secret.vue +9 -6
  287. package/edit/workload/storage/vsphereVolume.vue +11 -7
  288. package/initialize/app-extended.js +7 -1
  289. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
  290. package/list/management.cattle.io.setting.vue +22 -13
  291. package/list/management.cattle.io.user.vue +7 -3
  292. package/list/namespace.vue +3 -0
  293. package/list/provisioning.cattle.io.cluster.vue +6 -7
  294. package/mixins/brand.js +17 -0
  295. package/mixins/create-edit-view/impl.js +10 -0
  296. package/models/provisioning.cattle.io.cluster.js +19 -18
  297. package/models/workload.js +2 -2
  298. package/package.json +1 -1
  299. package/pages/account/index.vue +93 -58
  300. package/pages/account/pri.vue +229 -0
  301. package/pages/auth/login.vue +216 -51
  302. package/pages/auth/setup.vue +175 -33
  303. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  304. package/pages/c/_cluster/auth/roles/index.vue +83 -8
  305. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  306. package/pages/c/_cluster/explorer/index.vue +2 -1
  307. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  308. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  309. package/pages/c/_cluster/settings/banners.vue +174 -102
  310. package/pages/c/_cluster/settings/brand.vue +350 -302
  311. package/pages/c/_cluster/settings/performance.vue +61 -38
  312. package/pages/home.vue +119 -37
  313. package/pages/prefs.vue +27 -25
  314. package/pkg/tsconfig.json +9 -9
  315. package/pkg/vue.config.js +1 -1
  316. package/plugins/dashboard-store/actions.js +1 -1
  317. package/plugins/dashboard-store/resource-class.js +28 -27
  318. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  319. package/public/index.html +4 -4
  320. package/rancher-components/BadgeState/BadgeState.vue +38 -55
  321. package/rancher-components/Banner/Banner.vue +25 -9
  322. package/rancher-components/Card/Card.vue +7 -8
  323. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  324. package/rancher-components/Form/LabeledInput/LabeledInput.vue +42 -3
  325. package/rancher-components/Form/Radio/RadioButton.vue +35 -11
  326. package/rancher-components/Form/Radio/RadioGroup.vue +22 -6
  327. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  328. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -0
  329. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +41 -4
  330. package/rancher-components/RcDropdown/RcDropdown.vue +35 -7
  331. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  332. package/rancher-components/RcDropdown/RcDropdownMenu.vue +12 -6
  333. package/rancher-components/RcDropdown/types.ts +1 -0
  334. package/rancher-components/StringList/StringList.vue +1 -1
  335. package/scripts/build-pkg.sh +18 -23
  336. package/scripts/publish-shell.sh +1 -1
  337. package/static/favicon.ico +0 -0
  338. package/static/favicon.png +0 -0
  339. package/static/loading-indicator.html +3 -3
  340. package/store/i18n.js +6 -2
  341. package/store/modal.ts +3 -3
  342. package/store/prefs.js +11 -4
  343. package/store/type-map.js +30 -2
  344. package/types/shell/index.d.ts +86 -97
  345. package/utils/error.js +109 -8
  346. package/utils/errorTranslate.json +1740 -0
  347. package/utils/errorTranslateNew.json +39 -0
  348. package/utils/roleFiltering.js +33 -0
  349. package/utils/router.js +21 -0
  350. package/utils/select.js +26 -3
  351. package/utils/string.js +8 -5
  352. package/utils/title.ts +1 -1
  353. package/vue.config.js +1 -1
@@ -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"
@@ -949,7 +944,6 @@ export default {
949
944
  .ns-filter {
950
945
  width: 280px;
951
946
  display: inline-block;
952
- border-radius: var(--border-radius);
953
947
 
954
948
  .ns-glass {
955
949
  top: 0;
@@ -968,15 +962,19 @@ export default {
968
962
  }
969
963
 
970
964
  .ns-clear {
971
- padding: 0 5px;
972
965
  &:hover {
973
966
  color: var(--primary);
967
+ cursor: pointer;
974
968
  }
975
969
  }
976
970
 
977
971
  .ns-singleton-info, .ns-clear {
978
972
  align-items: center;
979
973
  display: flex;
974
+ > i {
975
+ padding-right: 5px;
976
+ font-size: 10px;
977
+ }
980
978
  }
981
979
 
982
980
  .ns-input {
@@ -987,26 +985,24 @@ export default {
987
985
 
988
986
  .ns-filter-input {
989
987
  height: 24px;
988
+ border: 1px solid #d7d7d7;
989
+ padding: 0px 5px;
990
990
  }
991
991
 
992
992
  .ns-filter-clear {
993
993
  cursor: pointer;
994
994
  position: absolute;
995
995
  right: 10px;
996
- top: 10px;
996
+ top: 5px;
997
997
  line-height: 24px;
998
998
  text-align: center;
999
- width: 14px;
1000
- min-height: 14px;
1001
- }
1002
-
1003
- .ns-chip-button {
1004
- min-height: 14px;
999
+ width: 24px;
1005
1000
  }
1006
1001
 
1007
1002
  .ns-dropdown-menu {
1008
1003
  background-color: var(--header-bg);
1009
- border: 1px solid var(--primary-border);
1004
+ /* border: 1px solid var(--primary-border); */
1005
+ border: 1px solid #d7d7d7;;
1010
1006
  border-bottom-left-radius: var(--border-radius);
1011
1007
  border-bottom-right-radius: var(--border-radius);
1012
1008
  color: var(--header-btn-text);
@@ -1026,10 +1022,10 @@ export default {
1026
1022
  }
1027
1023
 
1028
1024
  .ns-divider {
1029
- border-top: 1px solid var(--border);
1025
+ /* border-top: 1px solid var(--border); */
1030
1026
  cursor: default;
1031
- margin-top: 10px;
1032
- padding-bottom: 10px;
1027
+ /* margin-top: 10px; */
1028
+ /* padding-bottom: 10px; */
1033
1029
  }
1034
1030
 
1035
1031
  .ns-option {
@@ -1069,7 +1065,7 @@ export default {
1069
1065
  &.ns-selected:not(:hover) {
1070
1066
  .ns-item {
1071
1067
  > * {
1072
- color: var(--primary);
1068
+ /* color: var(--primary); */
1073
1069
  }
1074
1070
  }
1075
1071
 
@@ -1122,7 +1118,7 @@ export default {
1122
1118
  border-radius: var(--border-radius);
1123
1119
  color: var(--header-btn-text);
1124
1120
  cursor: pointer;
1125
- height: 40px;
1121
+ height: 32px;
1126
1122
  padding: 0 10px;
1127
1123
  position: relative;
1128
1124
  z-index: z-index('dropdownOverlay');
@@ -1130,7 +1126,8 @@ export default {
1130
1126
  &.ns-open {
1131
1127
  border-bottom-left-radius: 0;
1132
1128
  border-bottom-right-radius: 0;
1133
- border-color: var(--primary-border);
1129
+ /* border-color: var(--primary-border); */
1130
+ border-color: #d7d7d7;
1134
1131
  }
1135
1132
 
1136
1133
  > .ns-values {
@@ -1169,12 +1166,13 @@ export default {
1169
1166
  border-radius: 5px;
1170
1167
  color: var(--tag-text);
1171
1168
  display: flex;
1172
- line-height: 20px;
1169
+ /* line-height: 20px; */
1173
1170
  padding: 2px 5px;
1174
1171
  white-space: nowrap;
1175
1172
 
1176
1173
  > i {
1177
1174
  margin-left: 5px;
1175
+ font-size: 8px;
1178
1176
 
1179
1177
  &:hover {
1180
1178
  color: var(--primary);
@@ -471,12 +471,14 @@ export default {
471
471
 
472
472
  <template>
473
473
  <div>
474
- <!-- Overlay -->
474
+ <!-- ====================== 遮罩层(点击可关闭菜单) ====================== -->
475
475
  <div
476
476
  v-if="shown"
477
477
  class="side-menu-glass"
478
478
  @click="hide()"
479
479
  />
480
+
481
+ <!-- ====================== 菜单主容器(带淡入淡出过渡) ====================== -->
480
482
  <transition name="fade">
481
483
  <!-- Side menu -->
482
484
  <div
@@ -487,8 +489,11 @@ export default {
487
489
  role="navigation"
488
490
  :aria-label="t('nav.ariaLabel.topLevelMenu')"
489
491
  >
490
- <!-- Logo and name -->
492
+
493
+ <!-- ====================== 菜单头部(Logo + 菜单按钮) ====================== -->
491
494
  <div class="title">
495
+
496
+ <!-- 菜单按钮(汉堡图标) -->
492
497
  <div
493
498
  data-testid="top-level-menu"
494
499
  :aria-label="t('nav.expandCollapseAppBar')"
@@ -499,6 +504,8 @@ export default {
499
504
  @keyup.space="toggle()"
500
505
  @click="toggle()"
501
506
  >
507
+
508
+ <!-- 汉堡菜单SVG图标 -->
502
509
  <svg
503
510
  class="menu-icon"
504
511
  xmlns="http://www.w3.org/2000/svg"
@@ -511,19 +518,22 @@ export default {
511
518
  fill="none"
512
519
  /><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /></svg>
513
520
  </div>
521
+
522
+ <!-- 品牌Logo -->
514
523
  <div class="side-menu-logo">
515
524
  <BrandImage
516
525
  data-testid="side-menu__brand-img"
517
526
  :alt="t('nav.alt.mainMenuRancherLogo')"
518
- file-name="rancher-logo.svg"
527
+ file-name="logo.png"
519
528
  />
520
529
  </div>
521
530
  </div>
522
531
 
523
- <!-- Menu body -->
532
+ <!-- ====================== 菜单内容区 ====================== -->
524
533
  <div class="body">
525
534
  <div>
526
- <!-- Home button -->
535
+
536
+ <!-- 首页按钮 -->
527
537
  <div @click="hide()">
528
538
  <router-link
529
539
  class="option cluster selector home"
@@ -531,6 +541,8 @@ export default {
531
541
  role="link"
532
542
  :aria-label="t('nav.ariaLabel.homePage')"
533
543
  >
544
+
545
+ <!-- 首页图标 -->
534
546
  <svg
535
547
  v-clean-tooltip="getTooltipConfig(t('nav.home'))"
536
548
  class="top-menu-icon"
@@ -547,12 +559,14 @@ export default {
547
559
  </div>
548
560
  </router-link>
549
561
  </div>
550
- <!-- Search bar -->
562
+
563
+ <!-- 集群搜索框 -->
551
564
  <div
552
565
  v-if="showClusterSearch"
553
566
  class="clusters-search"
554
567
  >
555
568
  <div class="clusters-search-count">
569
+ <!-- 当前搜索到的集群数量 -->
556
570
  <span>{{ clusterFilterCount }}</span>
557
571
  {{ t('nav.search.clusters') }}
558
572
  <i
@@ -571,10 +585,14 @@ export default {
571
585
  :tabindex="!shown ? -1 : 0"
572
586
  :aria-label="t('nav.search.ariaLabel')"
573
587
  >
588
+
589
+ <!-- 搜索图标 -->
574
590
  <i
575
591
  class="magnifier icon icon-search"
576
592
  :class="{ active: clusterFilter }"
577
593
  />
594
+
595
+ <!-- 清空按钮 -->
578
596
  <i
579
597
  v-if="clusterFilter"
580
598
  class="icon icon-close"
@@ -584,9 +602,11 @@ export default {
584
602
  </div>
585
603
  </div>
586
604
 
587
- <!-- Harvester extras -->
605
+ <!-- ====================== Harvester 相关功能区 ====================== -->
588
606
  <template v-if="hciApps.length">
589
607
  <div class="category" />
608
+
609
+ <!-- 跳转 Harvester Dashboard -->
590
610
  <div>
591
611
  <a
592
612
  v-if="isRancherInHarvester"
@@ -602,6 +622,8 @@ export default {
602
622
  </div>
603
623
  </a>
604
624
  </div>
625
+
626
+ <!-- Harvester 应用列表 -->
605
627
  <div
606
628
  v-for="(a, i) in appBar.hciApps"
607
629
  :key="i"
@@ -624,14 +646,14 @@ export default {
624
646
  </div>
625
647
  </template>
626
648
 
627
- <!-- Cluster menu -->
649
+ <!-- ====================== 集群列表 ====================== -->
628
650
  <template v-if="!!allClustersCount">
629
651
  <div
630
652
  ref="clusterList"
631
653
  class="clusters"
632
654
  :style="pinnedClustersHeight"
633
655
  >
634
- <!-- Pinned Clusters -->
656
+ <!-- 已固定集群 -->
635
657
  <div
636
658
  v-if="showPinClusters && pinFiltered.length"
637
659
  class="clustersPinned"
@@ -642,11 +664,13 @@ export default {
642
664
  :data-testid="`pinned-ready-cluster-${index}`"
643
665
  @click="hide()"
644
666
  >
645
- <button
667
+
668
+ <!-- 可用集群按钮 -->
669
+ <span
646
670
  v-if="c.ready"
647
671
  v-shortkey.push="{windows: ['alt'], mac: ['option']}"
648
672
  :data-testid="`pinned-menu-cluster-${ c.id }`"
649
- class="cluster selector option"
673
+ class="clusterBtn cluster selector option"
650
674
  :class="{'active-menu-link': c.isMenuActive }"
651
675
  :to="c.clusterRoute"
652
676
  role="button"
@@ -676,7 +700,9 @@ export default {
676
700
  :cluster="c"
677
701
  :tab-order="shown ? 0 : -1"
678
702
  />
679
- </button>
703
+ </span>
704
+
705
+ <!-- 不可用集群 -->
680
706
  <span
681
707
  v-else
682
708
  class="option cluster selector disabled"
@@ -705,6 +731,8 @@ export default {
705
731
  />
706
732
  </span>
707
733
  </div>
734
+
735
+ <!-- 分割线 -->
708
736
  <div
709
737
  v-if="clustersFiltered.length > 0"
710
738
  class="category-title"
@@ -713,7 +741,7 @@ export default {
713
741
  </div>
714
742
  </div>
715
743
 
716
- <!-- Clusters Search result -->
744
+ <!-- 搜索结果集群列表 -->
717
745
  <div class="clustersList">
718
746
  <div
719
747
  v-for="(c, index) in appBar.clustersFiltered"
@@ -721,11 +749,13 @@ export default {
721
749
  :data-testid="`top-level-menu-cluster-${index}`"
722
750
  @click="hide()"
723
751
  >
724
- <button
752
+
753
+ <!-- 可用集群 -->
754
+ <span
725
755
  v-if="c.ready"
726
756
  v-shortkey.push="{windows: ['alt'], mac: ['option']}"
727
757
  :data-testid="`menu-cluster-${ c.id }`"
728
- class="cluster selector option"
758
+ class="cluster selector option clusterBtn"
729
759
  :class="{'active-menu-link': c.isMenuActive }"
730
760
  :to="c.clusterRoute"
731
761
  role="button"
@@ -756,7 +786,9 @@ export default {
756
786
  :tab-order="shown ? 0 : -1"
757
787
  :cluster="c"
758
788
  />
759
- </button>
789
+ </span>
790
+
791
+ <!-- 不可用集群 -->
760
792
  <span
761
793
  v-else
762
794
  class="option cluster selector disabled"
@@ -788,7 +820,7 @@ export default {
788
820
  </div>
789
821
  </div>
790
822
 
791
- <!-- No clusters message -->
823
+ <!-- 无匹配集群提示 -->
792
824
  <div
793
825
  v-if="clustersFiltered.length === 0 && searchActive"
794
826
  data-testid="top-level-menu-no-results"
@@ -817,8 +849,9 @@ export default {
817
849
  </router-link>
818
850
  </template>
819
851
 
820
- <!-- MULTI CLUSTER APPS -->
852
+ <!-- ====================== 多集群应用区 ====================== -->
821
853
  <div class="category">
854
+ <!-- 多集群应用 -->
822
855
  <template v-if="multiClusterApps.length">
823
856
  <div
824
857
  class="category-title"
@@ -834,6 +867,7 @@ export default {
834
867
  @click="hide()"
835
868
  >
836
869
  <router-link
870
+ v-if="a.value !== 'fleet'"
837
871
  class="option"
838
872
  :class="{'active-menu-link': a.isMenuActive }"
839
873
  :to="a.to"
@@ -890,7 +924,7 @@ export default {
890
924
  <div
891
925
  class="footer"
892
926
  >
893
- <div
927
+ <!-- <div
894
928
  v-if="canEditSettings"
895
929
  class="support"
896
930
  @click="hide()"
@@ -915,7 +949,7 @@ export default {
915
949
  >
916
950
  {{ aboutText }}
917
951
  </router-link>
918
- </div>
952
+ </div> -->
919
953
  </div>
920
954
  </div>
921
955
  </transition>
@@ -973,6 +1007,10 @@ export default {
973
1007
  $option-padding-left: 14px;
974
1008
  $option-height: $icon-size + $option-padding + $option-padding;
975
1009
 
1010
+ .clusterBtn {
1011
+ background-color: var(--nav-icon-badge-bg);
1012
+ }
1013
+
976
1014
  .side-menu {
977
1015
  .menu {
978
1016
  position: absolute;
@@ -1069,7 +1107,6 @@ export default {
1069
1107
  flex: 1;
1070
1108
  display: flex;
1071
1109
  flex-direction: column;
1072
- margin: 10px 0;
1073
1110
  width: 300px;
1074
1111
  overflow: auto;
1075
1112
 
@@ -1077,7 +1114,7 @@ export default {
1077
1114
  align-items: center;
1078
1115
  cursor: pointer;
1079
1116
  display: flex;
1080
- color: var(--link);
1117
+ color: var(--primary);
1081
1118
  font-size: 14px;
1082
1119
  height: $option-height;
1083
1120
  white-space: nowrap;
@@ -1087,7 +1124,7 @@ export default {
1087
1124
  border: none;
1088
1125
 
1089
1126
  .cluster-badge-logo-text {
1090
- color: var(--default-active-text);
1127
+ color: var(--primary);
1091
1128
  font-weight: 500;
1092
1129
  }
1093
1130
 
@@ -1159,7 +1196,7 @@ export default {
1159
1196
  .rancher-provider-icon,
1160
1197
  svg {
1161
1198
  margin-right: 16px;
1162
- fill: var(--link);
1199
+ fill: var(--primary);
1163
1200
  }
1164
1201
 
1165
1202
  .top-menu-icon {
@@ -1581,7 +1618,7 @@ export default {
1581
1618
  }
1582
1619
 
1583
1620
  :deep() .v-popper__arrow-container {
1584
- display: none;
1621
+ display: none !important;
1585
1622
  }
1586
1623
 
1587
1624
  :deep() .v-popper:focus {