dashboard-shell-shell 3.0.5-test.8 → 3.0.5-test.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/brand/csp/favicon.png +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/iconsNew/demo.css +539 -0
- package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
- package/assets/iconsNew/demo_index.html +303 -0
- package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.css +43 -0
- package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.js +1 -0
- package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.json +44 -0
- package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.ttf +0 -0
- package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff +0 -0
- package/assets/iconsNew/iconfont.woff2 +0 -0
- package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
- package/assets/images/login-logo.svg +110 -12
- package/assets/images/logo.svg +129 -0
- package/assets/images/pl/dark/logo.svg +129 -0
- package/assets/images/pl/logo.svg +129 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/app.scss +1 -0
- package/assets/styles/base/_helpers.scss +1 -1
- package/assets/styles/base/_variables.scss +2 -2
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +1 -1
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +5 -1
- package/assets/styles/themes/_light.scss +3 -3
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +67 -0
- package/assets/translations/zh-hans.yaml +226 -24
- package/components/ButtonDropdown.vue +3 -1
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ConsumptionGauge.vue +1 -1
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CruResource.vue +3 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +22 -19
- package/components/Drawer/ResourceDetailDrawer/index.vue +3 -3
- package/components/ExplorerMembers.vue +10 -1
- package/components/GlobalRoleBindings.vue +69 -114
- package/components/PodSecurityAdmission.vue +1 -1
- package/components/PromptRemove.vue +23 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +37 -24
- package/components/ResourceDetail/Masthead/index.vue +1 -1
- package/components/ResourceDetail/Masthead/latest.vue +1 -1
- package/components/ResourceDetail/Masthead/legacy.vue +8 -7
- package/components/ResourceDetail/legacy.vue +15 -15
- package/components/ResourceList/Masthead.vue +16 -15
- package/components/ResourceTable.vue +16 -0
- package/components/SideNav.vue +21 -21
- package/components/SingleClusterInfo.vue +2 -1
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +54 -18
- package/components/Tabbed/index.vue +6 -1
- package/components/actionButton/index.vue +649 -0
- package/components/auth/Principal.vue +16 -8
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +13 -210
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- package/components/form/ClusterAppearance.vue +4 -3
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/Footer.vue +1 -0
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +20 -2
- package/components/form/LabeledSelect.vue +3 -1
- package/components/form/Labels.vue +2 -2
- package/components/form/MatchExpressions.vue +4 -4
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +60 -41
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +3 -2
- package/components/form/Networking.vue +6 -9
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +66 -48
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/SecretSelector.vue +24 -23
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +7 -1
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +8 -1
- package/components/nav/Header.vue +51 -174
- package/components/nav/NamespaceFilter.vue +14 -19
- package/components/nav/TopLevelMenu.vue +100 -126
- package/components/nav/Type.vue +11 -3
- package/config/menuRouteMap.js +10 -0
- package/config/private-label.js +2 -3
- package/config/product/explorer.js +32 -10
- package/config/product/manager.js +28 -17
- package/config/product/uiplugins.js +13 -10
- package/config/router/navigation-guards/index.js +61 -3
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- package/dialog/RollbackWorkloadDialog.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/configmap.vue +4 -0
- package/edit/logging-flow/index.vue +1 -2
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
- package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +32 -8
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +32 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +52 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +45 -0
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +31 -0
- package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/persistentvolume/index.vue +3 -1
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +1 -1
- package/edit/secret/index.vue +2 -2
- package/edit/service.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +10 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +19 -15
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
- package/mixins/create-edit-view/impl.js +10 -0
- package/models/provisioning.cattle.io.cluster.js +19 -18
- package/models/workload.js +2 -2
- package/package.json +1 -1
- package/pages/account/index.vue +93 -58
- package/pages/auth/login.vue +25 -28
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/auth/roles/index.vue +27 -3
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +2 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +55 -13
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/actions.js +1 -1
- package/public/index.html +1 -1
- package/rancher-components/Banner/Banner.vue +14 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/scripts/build-pkg.sh +18 -23
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +1 -0
- package/store/index.js +4 -4
- package/store/type-map.js +0 -2
- package/types/shell/index.d.ts +8 -0
- package/utils/error.js +23 -3
- package/utils/errorTranslate.json +402 -8
- package/utils/errorTranslateNew.json +39 -0
- package/utils/roleFiltering.js +33 -0
- package/utils/title.ts +1 -1
- package/vue.config.js +1 -1
- /package/assets/images/{logo.png → pl/dark/logo.png} +0 -0
|
@@ -80,7 +80,7 @@ export default {
|
|
|
80
80
|
ctx: this,
|
|
81
81
|
showImportModal: false,
|
|
82
82
|
showSearchModal: false,
|
|
83
|
-
userIcon: require('@shell/assets/images/logo.
|
|
83
|
+
userIcon: require('@shell/assets/images/logo.svg'),
|
|
84
84
|
};
|
|
85
85
|
},
|
|
86
86
|
|
|
@@ -277,14 +277,14 @@ export default {
|
|
|
277
277
|
|
|
278
278
|
methods: {
|
|
279
279
|
|
|
280
|
-
LogOutfn
|
|
281
|
-
sessionStorage.removeItem('TOPLEVELPERMISSIONS')
|
|
280
|
+
LogOutfn(type) {
|
|
281
|
+
sessionStorage.removeItem('TOPLEVELPERMISSIONS');
|
|
282
282
|
if (type === '1') {
|
|
283
|
-
this.$router.push({ name: 'account'})
|
|
283
|
+
this.$router.push({ name: 'account' });
|
|
284
284
|
} else if (type === '2') {
|
|
285
|
-
this.showSloModal()
|
|
285
|
+
this.showSloModal();
|
|
286
286
|
} else if (type === '3') {
|
|
287
|
-
this.$router.push(this.generateLogoutRoute)
|
|
287
|
+
this.$router.push(this.generateLogoutRoute);
|
|
288
288
|
}
|
|
289
289
|
},
|
|
290
290
|
|
|
@@ -413,160 +413,35 @@ export default {
|
|
|
413
413
|
</script>
|
|
414
414
|
|
|
415
415
|
<template>
|
|
416
|
-
|
|
417
416
|
<!-- 整个页面的顶部 header -->
|
|
418
417
|
<header
|
|
419
418
|
ref="header"
|
|
420
419
|
data-testid="header"
|
|
421
420
|
>
|
|
422
421
|
<div>
|
|
423
|
-
|
|
424
422
|
<!-- 顶部一级菜单(根据不同产品/集群条件决定是否显示) -->
|
|
425
423
|
<TopLevelMenu v-if="isRancherInHarvester || isMultiCluster || !isSingleProduct" />
|
|
426
424
|
</div>
|
|
427
425
|
|
|
428
|
-
<!--
|
|
429
|
-
class="menu-spacer"
|
|
430
|
-
:class="{'isSingleProduct': isSingleProduct }"
|
|
431
|
-
>
|
|
432
|
-
<router-link
|
|
433
|
-
v-if="isSingleProduct && !isRancherInHarvester"
|
|
434
|
-
:to="singleProductLogoRoute"
|
|
435
|
-
role="link"
|
|
436
|
-
:alt="t('branding.logos.home')"
|
|
437
|
-
>
|
|
438
|
-
<BrandImage
|
|
439
|
-
v-if="isSingleProduct.supportCustomLogo && isHarvester"
|
|
440
|
-
class="side-menu-logo"
|
|
441
|
-
file-name="harvester.svg"
|
|
442
|
-
:support-custom-logo="true"
|
|
443
|
-
:alt="t('branding.logos.label')"
|
|
444
|
-
/>
|
|
445
|
-
<img
|
|
446
|
-
v-else
|
|
447
|
-
class="side-menu-logo"
|
|
448
|
-
:src="isSingleProduct.logo"
|
|
449
|
-
:alt="t('branding.logos.label')"
|
|
450
|
-
>
|
|
451
|
-
</router-link>
|
|
452
|
-
</div>
|
|
453
|
-
|
|
454
|
-
<div
|
|
455
|
-
v-if="!simple"
|
|
456
|
-
ref="product"
|
|
457
|
-
class="product"
|
|
458
|
-
>
|
|
459
|
-
<div
|
|
460
|
-
v-if="currentProduct && currentProduct.showClusterSwitcher"
|
|
461
|
-
v-clean-tooltip="nameTooltip"
|
|
462
|
-
class="cluster cluster-clipped"
|
|
463
|
-
>
|
|
464
|
-
<div
|
|
465
|
-
v-if="isSingleProduct && !isRancherInHarvester"
|
|
466
|
-
class="product-name"
|
|
467
|
-
>
|
|
468
|
-
<template v-if="isSingleProduct.supportCustomLogo">
|
|
469
|
-
{{ vendor }}
|
|
470
|
-
</template>
|
|
471
|
-
<template v-else>
|
|
472
|
-
{{ t(isSingleProduct.productNameKey) }}
|
|
473
|
-
</template>
|
|
474
|
-
</div>
|
|
475
|
-
<template v-else>
|
|
476
|
-
<ClusterProviderIcon
|
|
477
|
-
v-if="currentCluster"
|
|
478
|
-
:cluster="currentCluster"
|
|
479
|
-
class="mr-10"
|
|
480
|
-
:alt="t('branding.logos.label')"
|
|
481
|
-
/>
|
|
482
|
-
<div
|
|
483
|
-
v-if="currentCluster"
|
|
484
|
-
ref="clusterName"
|
|
485
|
-
class="cluster-name"
|
|
486
|
-
>
|
|
487
|
-
{{ currentCluster.spec.displayName }}
|
|
488
|
-
</div>
|
|
489
|
-
<ClusterBadge
|
|
490
|
-
v-if="currentCluster"
|
|
491
|
-
:cluster="currentCluster"
|
|
492
|
-
class="ml-10"
|
|
493
|
-
:alt="t('branding.logos.label')"
|
|
494
|
-
/>
|
|
495
|
-
<div
|
|
496
|
-
v-if="!currentCluster"
|
|
497
|
-
class="simple-title"
|
|
498
|
-
>
|
|
499
|
-
<BrandImage
|
|
500
|
-
class="side-menu-logo-img"
|
|
501
|
-
file-name="rancher-logo.svg"
|
|
502
|
-
:alt="t('branding.logos.label')"
|
|
503
|
-
/>
|
|
504
|
-
</div>
|
|
505
|
-
</template>
|
|
506
|
-
</div>
|
|
507
|
-
<div
|
|
508
|
-
v-if="currentProduct && !currentProduct.showClusterSwitcher"
|
|
509
|
-
class="cluster"
|
|
510
|
-
>
|
|
511
|
-
<img
|
|
512
|
-
v-if="currentProduct.iconHeader"
|
|
513
|
-
v-bind="$attrs"
|
|
514
|
-
:src="currentProduct.iconHeader"
|
|
515
|
-
class="cluster-os-logo mr-10"
|
|
516
|
-
style="width: 44px; height: 36px;"
|
|
517
|
-
:alt="t('branding.logos.label')"
|
|
518
|
-
>
|
|
519
|
-
<div class="product-name">
|
|
520
|
-
{{ prod }}
|
|
521
|
-
</div>
|
|
522
|
-
</div>
|
|
523
|
-
</div>
|
|
524
|
-
|
|
525
|
-
<div
|
|
526
|
-
v-else
|
|
527
|
-
class="simple-title"
|
|
528
|
-
>
|
|
529
|
-
<div
|
|
530
|
-
v-if="isSingleProduct"
|
|
531
|
-
class="product-name"
|
|
532
|
-
>
|
|
533
|
-
{{ t(isSingleProduct.productNameKey) }}
|
|
534
|
-
</div>
|
|
535
|
-
|
|
536
|
-
<div
|
|
537
|
-
v-else
|
|
538
|
-
class="side-menu-logo"
|
|
539
|
-
>
|
|
540
|
-
<BrandImage
|
|
541
|
-
class="side-menu-logo-img"
|
|
542
|
-
data-testid="header__brand-img"
|
|
543
|
-
file-name="rancher-logo.svg"
|
|
544
|
-
:alt="t('branding.logos.label')"
|
|
545
|
-
/>
|
|
546
|
-
</div>
|
|
547
|
-
</div> -->
|
|
548
|
-
|
|
549
|
-
<!-- ===== 左侧 logo 区域 ===== -->
|
|
426
|
+
<!-- ===== 左侧 logo 区域 ===== -->
|
|
550
427
|
<div class="menu-spacer">
|
|
551
428
|
<!-- 如果是单产品模式且不是 RancherInHarvester,就显示 logo 路由跳转 -->
|
|
552
429
|
<router-link
|
|
553
430
|
v-if="isSingleProduct && !isRancherInHarvester"
|
|
554
431
|
:to="singleProductLogoRoute"
|
|
555
432
|
>
|
|
556
|
-
|
|
557
433
|
<!-- 显示用户头像或 logo 图片 -->
|
|
558
434
|
<img
|
|
559
435
|
:src="userIcon"
|
|
560
436
|
>
|
|
561
437
|
</router-link>
|
|
562
438
|
</div>
|
|
563
|
-
|
|
439
|
+
|
|
564
440
|
<!-- ===== 中间占位符(把左右内容分开) ===== -->
|
|
565
441
|
<div class="spacer" />
|
|
566
442
|
|
|
567
443
|
<!-- ===== 右侧功能区域 ===== -->
|
|
568
444
|
<div class="rd-header-right">
|
|
569
|
-
|
|
570
445
|
<!-- 动态插入右侧自定义组件(例如插件扩展的 header) -->
|
|
571
446
|
<component :is="navHeaderRight" />
|
|
572
447
|
|
|
@@ -575,10 +450,9 @@ export default {
|
|
|
575
450
|
v-if="showFilter"
|
|
576
451
|
class="top"
|
|
577
452
|
>
|
|
578
|
-
|
|
579
453
|
<!-- 如果集群就绪 + 当前产品支持命名空间过滤器 或 Explorer 模式 -->
|
|
580
454
|
<NamespaceFilter v-if="clusterReady && currentProduct && (currentProduct.showNamespaceFilter || isExplorer)" />
|
|
581
|
-
|
|
455
|
+
|
|
582
456
|
<!-- 否则显示工作空间切换器 -->
|
|
583
457
|
<WorkspaceSwitcher v-else-if="clusterReady && currentProduct && currentProduct.showWorkspaceSwitcher" />
|
|
584
458
|
</div>
|
|
@@ -588,12 +462,10 @@ export default {
|
|
|
588
462
|
v-if="currentCluster && !simple"
|
|
589
463
|
class="header-buttons"
|
|
590
464
|
>
|
|
591
|
-
|
|
592
465
|
<!-- 如果当前产品支持集群切换器 -->
|
|
593
466
|
<template v-if="currentProduct && currentProduct.showClusterSwitcher">
|
|
594
|
-
|
|
595
467
|
<!-- 导入 YAML 按钮 -->
|
|
596
|
-
<button
|
|
468
|
+
<!-- <button
|
|
597
469
|
v-if="showImportYaml"
|
|
598
470
|
v-clean-tooltip="t('nav.import')"
|
|
599
471
|
:disabled="!importEnabled"
|
|
@@ -606,9 +478,9 @@ export default {
|
|
|
606
478
|
@click="openImport()"
|
|
607
479
|
>
|
|
608
480
|
<i class="icon icon-upload icon-lg" />
|
|
609
|
-
</button>
|
|
481
|
+
</button> -->
|
|
610
482
|
|
|
611
|
-
<button
|
|
483
|
+
<!-- <button
|
|
612
484
|
v-if="showKubeShell"
|
|
613
485
|
id="btn-kubectl"
|
|
614
486
|
v-clean-tooltip="t('nav.shellShortcut', {key: shellShortcut})"
|
|
@@ -623,10 +495,10 @@ export default {
|
|
|
623
495
|
@click="currentCluster.openShell()"
|
|
624
496
|
>
|
|
625
497
|
<i class="icon icon-terminal icon-lg" />
|
|
626
|
-
</button>
|
|
498
|
+
</button> -->
|
|
627
499
|
|
|
628
500
|
<!-- 下载 kubeconfig 按钮 -->
|
|
629
|
-
<button
|
|
501
|
+
<!-- <button
|
|
630
502
|
v-if="showKubeConfig"
|
|
631
503
|
v-clean-tooltip="t('nav.kubeconfig.download')"
|
|
632
504
|
:disabled="!kubeConfigEnabled"
|
|
@@ -639,10 +511,10 @@ export default {
|
|
|
639
511
|
@click="currentCluster.downloadKubeConfig()"
|
|
640
512
|
>
|
|
641
513
|
<i class="icon icon-file icon-lg" />
|
|
642
|
-
</button>
|
|
514
|
+
</button> -->
|
|
643
515
|
|
|
644
516
|
<!-- 复制 kubeconfig 按钮 -->
|
|
645
|
-
<button
|
|
517
|
+
<!-- <button
|
|
646
518
|
v-if="showCopyConfig"
|
|
647
519
|
v-clean-tooltip="t('nav.kubeconfig.copy')"
|
|
648
520
|
:disabled="!kubeConfigEnabled"
|
|
@@ -654,23 +526,22 @@ export default {
|
|
|
654
526
|
:aria-label="t('nav.kubeconfig.copy')"
|
|
655
527
|
@click="copyKubeConfig($event)"
|
|
656
528
|
>
|
|
657
|
-
|
|
658
|
-
<!-- 点击复制后显示对勾 -->
|
|
529
|
+
|
|
659
530
|
<i
|
|
660
531
|
v-if="kubeConfigCopying"
|
|
661
532
|
class="icon icon-checkmark icon-lg"
|
|
662
533
|
/>
|
|
663
534
|
|
|
664
|
-
<!-- 未复制状态显示复制图标 -->
|
|
665
535
|
<i
|
|
666
536
|
v-else
|
|
667
537
|
class="icon icon-copy icon-lg"
|
|
668
538
|
/>
|
|
669
|
-
</button>
|
|
539
|
+
</button> -->
|
|
670
540
|
</template>
|
|
671
541
|
|
|
672
542
|
<!-- 资源搜索按钮 -->
|
|
673
|
-
|
|
543
|
+
<!-- 2025/9/30 隐藏 -->
|
|
544
|
+
<!-- <button
|
|
674
545
|
v-if="showSearch"
|
|
675
546
|
id="header-btn-search"
|
|
676
547
|
v-clean-tooltip="t('nav.resourceSearch.toolTip', {key: searchShortcut})"
|
|
@@ -685,7 +556,7 @@ export default {
|
|
|
685
556
|
@click="openSearch()"
|
|
686
557
|
>
|
|
687
558
|
<i class="icon icon-search icon-lg" />
|
|
688
|
-
</button>
|
|
559
|
+
</button> -->
|
|
689
560
|
|
|
690
561
|
<!-- 搜索弹窗 -->
|
|
691
562
|
<app-modal
|
|
@@ -697,8 +568,7 @@ export default {
|
|
|
697
568
|
:trigger-focus-trap="true"
|
|
698
569
|
return-focus-selector="#header-btn-search"
|
|
699
570
|
@close="hideSearch()"
|
|
700
|
-
|
|
701
|
-
</app-modal>
|
|
571
|
+
/>
|
|
702
572
|
</div>
|
|
703
573
|
|
|
704
574
|
<!-- ===== 插件扩展按钮区 ===== -->
|
|
@@ -706,28 +576,33 @@ export default {
|
|
|
706
576
|
v-if="extensionHeaderActions.length"
|
|
707
577
|
class="header-buttons"
|
|
708
578
|
>
|
|
709
|
-
<
|
|
579
|
+
<template
|
|
710
580
|
v-for="action, i in extensionHeaderActions"
|
|
711
581
|
:key="`${action.label}${i}`"
|
|
712
|
-
v-clean-tooltip="handleExtensionTooltip(action)"
|
|
713
|
-
v-shortkey="action.shortcutKey"
|
|
714
|
-
:disabled="action.enabled ? !action.enabled(ctx) : false"
|
|
715
|
-
type="button"
|
|
716
|
-
class="btn header-btn role-tertiary"
|
|
717
|
-
:data-testid="`extension-header-action-${ action.labelKey || action.label }`"
|
|
718
|
-
role="button"
|
|
719
|
-
tabindex="0"
|
|
720
|
-
:aria-label="action.label"
|
|
721
|
-
@shortkey="handleExtensionAction(action, $event)"
|
|
722
|
-
@click="handleExtensionAction(action, $event)"
|
|
723
582
|
>
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
583
|
+
<!-- kubectl-explain.action | 2025/9/30隐藏 -->
|
|
584
|
+
<button
|
|
585
|
+
v-if="action.labelKey !== 'kubectl-explain.action'"
|
|
586
|
+
v-clean-tooltip="handleExtensionTooltip(action)"
|
|
587
|
+
v-shortkey="action.shortcutKey"
|
|
588
|
+
:disabled="action.enabled ? !action.enabled(ctx) : false"
|
|
589
|
+
type="button"
|
|
590
|
+
class="btn header-btn role-tertiary"
|
|
591
|
+
:data-testid="`extension-header-action-${ action.labelKey || action.label }`"
|
|
592
|
+
role="button"
|
|
593
|
+
tabindex="0"
|
|
594
|
+
:aria-label="action.label"
|
|
595
|
+
@shortkey="handleExtensionAction(action, $event)"
|
|
596
|
+
@click="handleExtensionAction(action, $event)"
|
|
597
|
+
>
|
|
598
|
+
<IconOrSvg
|
|
599
|
+
class="icon icon-lg"
|
|
600
|
+
:icon="action.icon"
|
|
601
|
+
:src="action.svg"
|
|
602
|
+
color="header"
|
|
603
|
+
/>
|
|
604
|
+
</button>
|
|
605
|
+
</template>
|
|
731
606
|
</div>
|
|
732
607
|
|
|
733
608
|
<!-- ===== 用户菜单(右上角头像 + 下拉) ===== -->
|
|
@@ -738,7 +613,6 @@ export default {
|
|
|
738
613
|
v-if="showUserMenu"
|
|
739
614
|
:aria-label="t('nav.userMenu.label')"
|
|
740
615
|
>
|
|
741
|
-
|
|
742
616
|
<!-- 头像触发按钮 -->
|
|
743
617
|
<rc-dropdown-trigger
|
|
744
618
|
ghost
|
|
@@ -758,7 +632,10 @@ export default {
|
|
|
758
632
|
v-else
|
|
759
633
|
class="icon icon-user icon-3x avatar"
|
|
760
634
|
/> -->
|
|
761
|
-
<i
|
|
635
|
+
<i
|
|
636
|
+
class="icon icon-usericon"
|
|
637
|
+
style="padding-bottom: 5px;"
|
|
638
|
+
/>
|
|
762
639
|
<span class="login-name">{{ principal.loginName }}</span>
|
|
763
640
|
</rc-dropdown-trigger>
|
|
764
641
|
|
|
@@ -1021,7 +898,7 @@ export default {
|
|
|
1021
898
|
border: none;
|
|
1022
899
|
background: var(--header-btn-bg);
|
|
1023
900
|
color: var(--header-btn-text);
|
|
1024
|
-
padding: 0
|
|
901
|
+
padding: 0 10px 0 10px;
|
|
1025
902
|
line-height: 32px;
|
|
1026
903
|
min-height: 32px;
|
|
1027
904
|
width: 30px;
|
|
@@ -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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
</
|
|
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
|
-
<
|
|
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"
|