dashboard-shell-shell 3.0.5-test.4 → 3.0.5-test.41
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/images/pl/dark/logo.png +0 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/base/_variables.scss +5 -5
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +8 -8
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +9 -5
- package/assets/styles/themes/_light.scss +6 -4
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +59 -0
- package/assets/translations/zh-hans.yaml +175 -15
- package/components/ActionDropdown.vue +1 -1
- package/components/ButtonDropdown.vue +3 -1
- package/components/CodeMirror.vue +6 -4
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CopyToClipboard.vue +15 -0
- package/components/Drawer/Chrome.vue +2 -2
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
- package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
- package/components/ExplorerMembers.vue +28 -4
- package/components/GlobalRoleBindings.vue +51 -112
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/PromptRemove.vue +17 -1
- package/components/RelatedResources.vue +3 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
- package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
- package/components/Resource/Detail/Metadata/index.vue +3 -1
- package/components/Resource/Detail/TitleBar/Title.vue +4 -3
- package/components/Resource/Detail/TitleBar/Top.vue +2 -0
- package/components/Resource/Detail/TitleBar/composables.ts +16 -1
- package/components/Resource/Detail/TitleBar/index.vue +123 -25
- 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 +18 -16
- package/components/ResourceList/Masthead.vue +13 -17
- package/components/ResourceTable.vue +10 -0
- package/components/SideNav.vue +21 -21
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +40 -20
- package/components/Tabbed/index.vue +6 -1
- package/components/auth/Principal.vue +10 -5
- package/components/auth/RoleDetailEdit.vue +11 -7
- package/components/breadcrumb/index.vue +119 -0
- package/components/form/ArrayList.vue +164 -147
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/ChangePassword.vue +1 -1
- 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 +6 -3
- 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 +31 -28
- package/components/form/Members/MembershipEditor.vue +2 -2
- package/components/form/NameNsDescription.vue +1 -1
- 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 +28 -25
- 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/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/Taints.vue +2 -1
- package/components/form/Tolerations.vue +13 -9
- package/components/form/ValueFromResource.vue +110 -96
- package/components/form/WorkloadPorts.vue +143 -123
- package/components/formatter/WorkloadHealthScale.vue +4 -3
- package/components/nav/Group.vue +6 -0
- package/components/nav/Header.vue +7 -4
- package/components/nav/NamespaceFilter.vue +15 -21
- package/components/nav/TopLevelMenu.vue +99 -125
- package/components/nav/Type.vue +11 -3
- package/config/menuRouteMap.js +10 -0
- package/config/product/explorer.js +31 -9
- package/config/product/manager.js +28 -17
- package/config/router/navigation-guards/index.js +61 -3
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- 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/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/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 +22 -18
- 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/models/provisioning.cattle.io.cluster.js +19 -18
- package/package.json +1 -1
- package/pages/account/index.vue +90 -118
- package/pages/account/pri.vue +229 -0
- package/pages/auth/login.vue +6 -1
- package/pages/auth/setup.vue +36 -17
- package/pages/c/_cluster/_product/namespaces.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +38 -5
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/home.vue +3 -4
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/resource-class.js +28 -27
- package/rancher-components/BadgeState/BadgeState.vue +33 -52
- package/rancher-components/Banner/Banner.vue +12 -2
- package/rancher-components/Form/Radio/RadioGroup.vue +9 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
- package/scripts/publish-shell.sh +1 -1
- package/store/i18n.js +4 -0
- package/store/type-map.js +1 -3
- package/types/shell/index.d.ts +4 -30
- package/utils/error.js +3 -1
- package/utils/errorTranslate.json +416 -2
- package/vue.config.js +1 -1
|
@@ -280,145 +280,163 @@ export default {
|
|
|
280
280
|
'show-ipam': showIpam,
|
|
281
281
|
}"
|
|
282
282
|
>
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
v-model:value="row.name"
|
|
299
|
-
:mode="mode"
|
|
300
|
-
:label="t('workload.container.ports.name')"
|
|
301
|
-
@update:value="queueUpdate"
|
|
302
|
-
/>
|
|
303
|
-
</div>
|
|
283
|
+
|
|
284
|
+
<div class="row mt-20">
|
|
285
|
+
<div
|
|
286
|
+
v-if="!row._showHost && row._serviceType !== 'LoadBalancer' && row._serviceType !== 'NodePort'"
|
|
287
|
+
class="add-host col"
|
|
288
|
+
>
|
|
289
|
+
<button
|
|
290
|
+
:disabled="mode==='view'"
|
|
291
|
+
type="button"
|
|
292
|
+
class="btn btn-sm role-tertiary"
|
|
293
|
+
@click="row._showHost = true"
|
|
294
|
+
>
|
|
295
|
+
{{ t('workloadPorts.addHost') }}
|
|
296
|
+
</button>
|
|
297
|
+
</div>
|
|
304
298
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
</div>
|
|
299
|
+
<div
|
|
300
|
+
v-if="showRemove"
|
|
301
|
+
class="remove"
|
|
302
|
+
>
|
|
303
|
+
<button
|
|
304
|
+
type="button"
|
|
305
|
+
class="btn role-link"
|
|
306
|
+
@click="remove(idx)"
|
|
307
|
+
>
|
|
308
|
+
{{ t('workloadPorts.remove') }}
|
|
309
|
+
</button>
|
|
310
|
+
</div>
|
|
318
311
|
|
|
319
|
-
<div class="protocol col">
|
|
320
|
-
<LabeledSelect
|
|
321
|
-
v-model:value="row.protocol"
|
|
322
|
-
:mode="mode"
|
|
323
|
-
:options="workloadPortOptions"
|
|
324
|
-
:multiple="false"
|
|
325
|
-
:label="t('workload.container.ports.protocol')"
|
|
326
|
-
@update:value="queueUpdate"
|
|
327
|
-
/>
|
|
328
312
|
</div>
|
|
329
313
|
|
|
330
|
-
<div
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
314
|
+
<div class="row">
|
|
315
|
+
<div class="service-type col span-6">
|
|
316
|
+
<LabeledSelect
|
|
317
|
+
v-model:value="row._serviceType"
|
|
318
|
+
:mode="mode"
|
|
319
|
+
:label="t('workload.container.ports.createService')"
|
|
320
|
+
:options="serviceTypes"
|
|
321
|
+
:disabled="canNotAccessService"
|
|
322
|
+
:tooltip="serviceTypeTooltip"
|
|
323
|
+
@update:value="queueUpdate"
|
|
324
|
+
/>
|
|
325
|
+
</div>
|
|
326
|
+
|
|
327
|
+
<div class="portName col span-6">
|
|
328
|
+
<LabeledInput
|
|
329
|
+
ref="name"
|
|
330
|
+
v-model:value="row.name"
|
|
331
|
+
:mode="mode"
|
|
332
|
+
:label="t('workload.container.ports.name')"
|
|
333
|
+
@update:value="queueUpdate"
|
|
334
|
+
/>
|
|
335
|
+
</div>
|
|
345
336
|
</div>
|
|
346
337
|
|
|
347
|
-
<div
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
338
|
+
<div class="row">
|
|
339
|
+
<div class="port col span-6">
|
|
340
|
+
<LabeledInput
|
|
341
|
+
v-model:value.number="row.containerPort"
|
|
342
|
+
:mode="mode"
|
|
343
|
+
type="number"
|
|
344
|
+
min="1"
|
|
345
|
+
max="65535"
|
|
346
|
+
placeholder="e.g. 8080"
|
|
347
|
+
:label="t('workload.container.ports.containerPort')"
|
|
348
|
+
:required="row._serviceType === 'LoadBalancer' "
|
|
349
|
+
@update:value="queueUpdate"
|
|
350
|
+
/>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<div class="protocol col span-6">
|
|
354
|
+
<LabeledSelect
|
|
355
|
+
v-model:value="row.protocol"
|
|
356
|
+
:mode="mode"
|
|
357
|
+
:options="workloadPortOptions"
|
|
358
|
+
:multiple="false"
|
|
359
|
+
:label="t('workload.container.ports.protocol')"
|
|
360
|
+
@update:value="queueUpdate"
|
|
361
|
+
/>
|
|
362
|
+
</div>
|
|
359
363
|
</div>
|
|
360
364
|
|
|
361
|
-
<div
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
<button
|
|
366
|
-
:disabled="mode==='view'"
|
|
367
|
-
type="button"
|
|
368
|
-
class="btn btn-sm role-tertiary"
|
|
369
|
-
@click="row._showHost = true"
|
|
365
|
+
<div class="row">
|
|
366
|
+
<div
|
|
367
|
+
v-if="row._showHost"
|
|
368
|
+
class="targetPort col span-6"
|
|
370
369
|
>
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
<div v-if="row._serviceType === 'LoadBalancer' || row._serviceType === 'NodePort'">
|
|
376
|
-
<LabeledInput
|
|
377
|
-
ref="port"
|
|
378
|
-
v-model:value.number="row._listeningPort"
|
|
379
|
-
type="number"
|
|
380
|
-
:mode="mode"
|
|
381
|
-
:label="t('workload.container.ports.listeningPort')"
|
|
382
|
-
:required="row._serviceType === 'LoadBalancer' "
|
|
383
|
-
@update:value="queueUpdate"
|
|
384
|
-
/>
|
|
385
|
-
</div>
|
|
386
|
-
|
|
387
|
-
<div v-if="showIpam && row._serviceType === 'LoadBalancer' && row.protocol === 'TCP'">
|
|
388
|
-
<div v-if="idx === ipamIndex">
|
|
389
|
-
<LabeledSelect
|
|
390
|
-
v-model:value="row._ipam"
|
|
370
|
+
<LabeledInput
|
|
371
|
+
ref="port"
|
|
372
|
+
v-model:value.number="row.hostPort"
|
|
391
373
|
:mode="mode"
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
374
|
+
type="number"
|
|
375
|
+
min="1"
|
|
376
|
+
max="65535"
|
|
377
|
+
placeholder="e.g. 80"
|
|
378
|
+
:label="t('workload.container.ports.hostPort')"
|
|
395
379
|
@update:value="queueUpdate"
|
|
396
380
|
/>
|
|
397
381
|
</div>
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
382
|
+
|
|
383
|
+
<div
|
|
384
|
+
v-if="row._showHost"
|
|
385
|
+
class="hostip col span-6"
|
|
386
|
+
>
|
|
387
|
+
<LabeledInput
|
|
388
|
+
ref="port"
|
|
389
|
+
v-model:value="row.hostIP"
|
|
401
390
|
:mode="mode"
|
|
402
|
-
|
|
403
|
-
:label="t('
|
|
404
|
-
:disabled="true"
|
|
391
|
+
placeholder="e.g. 1.1.1.1"
|
|
392
|
+
:label="t('workload.container.ports.hostIP')"
|
|
405
393
|
@update:value="queueUpdate"
|
|
406
394
|
/>
|
|
407
395
|
</div>
|
|
408
396
|
</div>
|
|
409
397
|
|
|
410
|
-
<div
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
<button
|
|
415
|
-
type="button"
|
|
416
|
-
class="btn role-link"
|
|
417
|
-
@click="remove(idx)"
|
|
398
|
+
<div class="row">
|
|
399
|
+
<div
|
|
400
|
+
v-if="row._serviceType === 'LoadBalancer' || row._serviceType === 'NodePort'"
|
|
401
|
+
class="col"
|
|
418
402
|
>
|
|
419
|
-
|
|
420
|
-
|
|
403
|
+
<LabeledInput
|
|
404
|
+
ref="port"
|
|
405
|
+
v-model:value.number="row._listeningPort"
|
|
406
|
+
type="number"
|
|
407
|
+
:mode="mode"
|
|
408
|
+
:label="t('workload.container.ports.listeningPort')"
|
|
409
|
+
:required="row._serviceType === 'LoadBalancer' "
|
|
410
|
+
@update:value="queueUpdate"
|
|
411
|
+
/>
|
|
412
|
+
</div>
|
|
421
413
|
</div>
|
|
414
|
+
|
|
415
|
+
<div class="row">
|
|
416
|
+
<div v-if="showIpam && row._serviceType === 'LoadBalancer' && row.protocol === 'TCP'">
|
|
417
|
+
<div v-if="idx === ipamIndex">
|
|
418
|
+
<LabeledSelect
|
|
419
|
+
v-model:value="row._ipam"
|
|
420
|
+
:mode="mode"
|
|
421
|
+
:options="ipamOptions"
|
|
422
|
+
:label="t('servicesPage.harvester.ipam.label')"
|
|
423
|
+
:disabled="mode === 'edit'"
|
|
424
|
+
@update:value="queueUpdate"
|
|
425
|
+
/>
|
|
426
|
+
</div>
|
|
427
|
+
<div v-else>
|
|
428
|
+
<LabeledSelect
|
|
429
|
+
v-model:value="rows[ipamIndex]._ipam"
|
|
430
|
+
:mode="mode"
|
|
431
|
+
:options="ipamOptions"
|
|
432
|
+
:label="t('servicesPage.harvester.ipam.label')"
|
|
433
|
+
:disabled="true"
|
|
434
|
+
@update:value="queueUpdate"
|
|
435
|
+
/>
|
|
436
|
+
</div>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
|
|
422
440
|
</div>
|
|
423
441
|
<div
|
|
424
442
|
v-if="showAdd"
|
|
@@ -447,11 +465,11 @@ $checkbox: 75;
|
|
|
447
465
|
}
|
|
448
466
|
}
|
|
449
467
|
.ports-headers, .ports-row{
|
|
450
|
-
display: grid;
|
|
451
|
-
grid-template-columns: 28% 28% 15% 10% 75px 0.5fr;
|
|
452
|
-
grid-column-gap: $column-gutter;
|
|
453
|
-
margin-bottom:
|
|
454
|
-
align-items: center;
|
|
468
|
+
// display: grid;
|
|
469
|
+
// grid-template-columns: 28% 28% 15% 10% 75px 0.5fr;
|
|
470
|
+
// grid-column-gap: $column-gutter;
|
|
471
|
+
// margin-bottom: 20px;
|
|
472
|
+
// align-items: center;
|
|
455
473
|
& .port{
|
|
456
474
|
display: flex;
|
|
457
475
|
justify-content: space-between;
|
|
@@ -475,6 +493,7 @@ $checkbox: 75;
|
|
|
475
493
|
}
|
|
476
494
|
|
|
477
495
|
.add-host {
|
|
496
|
+
margin-right: 20px;
|
|
478
497
|
justify-self: center;
|
|
479
498
|
}
|
|
480
499
|
|
|
@@ -492,6 +511,7 @@ $checkbox: 75;
|
|
|
492
511
|
|
|
493
512
|
.remove BUTTON {
|
|
494
513
|
padding: 0px;
|
|
514
|
+
min-width: auto;
|
|
495
515
|
}
|
|
496
516
|
|
|
497
517
|
.ports-row INPUT {
|
|
@@ -204,6 +204,7 @@ export default {
|
|
|
204
204
|
<div
|
|
205
205
|
:id="id"
|
|
206
206
|
class="hs-popover__content"
|
|
207
|
+
style="width: auto;padding-right: 10px;"
|
|
207
208
|
:class="{expanded, [id]:true}"
|
|
208
209
|
>
|
|
209
210
|
<div>
|
|
@@ -212,14 +213,14 @@ export default {
|
|
|
212
213
|
:key="i"
|
|
213
214
|
class="counts"
|
|
214
215
|
>
|
|
215
|
-
<span class="counts-label">{{ obj.label }}</span>
|
|
216
|
-
<span>{{ obj.value }}</span>
|
|
216
|
+
<span class="counts-label" style="white-space: normal;">{{ obj.label }}</span>
|
|
217
|
+
<span style="white-space: normal;">{{ obj.value }}</span>
|
|
217
218
|
</div>
|
|
218
219
|
<div
|
|
219
220
|
v-if="canScale"
|
|
220
221
|
class="text-center scale"
|
|
221
222
|
>
|
|
222
|
-
<span>{{ t('tableHeaders.scale') }} </span>
|
|
223
|
+
<span style="white-space: nowrap;margin-right: 5px;">{{ t('tableHeaders.scale') }} </span>
|
|
223
224
|
<PlusMinus
|
|
224
225
|
:value="row.spec.replicas"
|
|
225
226
|
:disabled="disabled"
|
package/components/nav/Group.vue
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import Type from '@shell/components/nav/Type';
|
|
3
|
+
import { menuRouteMap } from '@shell/config/menuRouteMap';
|
|
4
|
+
|
|
3
5
|
export default {
|
|
4
6
|
name: 'Group',
|
|
5
7
|
|
|
@@ -178,6 +180,7 @@ export default {
|
|
|
178
180
|
|
|
179
181
|
let parentPath = '';
|
|
180
182
|
const cluster = this.$route.params?.cluster;
|
|
183
|
+
const resource = this.$route?.params?.resource || ''
|
|
181
184
|
|
|
182
185
|
// Where we use nested route configuration, consider the parent route when trying to identify the nav location
|
|
183
186
|
if (this.$route.matched.length > 1) {
|
|
@@ -201,6 +204,9 @@ export default {
|
|
|
201
204
|
return true;
|
|
202
205
|
} else if (parentPath && itemFullPath === parentPath) {
|
|
203
206
|
return true;
|
|
207
|
+
// === 新增映射逻辑 ===
|
|
208
|
+
} else if (menuRouteMap[item.name] && menuRouteMap[item.name].includes(resource)) {
|
|
209
|
+
return true;
|
|
204
210
|
}
|
|
205
211
|
}
|
|
206
212
|
}
|
|
@@ -670,7 +670,8 @@ export default {
|
|
|
670
670
|
</template>
|
|
671
671
|
|
|
672
672
|
<!-- 资源搜索按钮 -->
|
|
673
|
-
|
|
673
|
+
<!-- 2025/9/30 隐藏 -->
|
|
674
|
+
<!-- <button
|
|
674
675
|
v-if="showSearch"
|
|
675
676
|
id="header-btn-search"
|
|
676
677
|
v-clean-tooltip="t('nav.resourceSearch.toolTip', {key: searchShortcut})"
|
|
@@ -685,7 +686,7 @@ export default {
|
|
|
685
686
|
@click="openSearch()"
|
|
686
687
|
>
|
|
687
688
|
<i class="icon icon-search icon-lg" />
|
|
688
|
-
</button>
|
|
689
|
+
</button> -->
|
|
689
690
|
|
|
690
691
|
<!-- 搜索弹窗 -->
|
|
691
692
|
<app-modal
|
|
@@ -706,9 +707,10 @@ export default {
|
|
|
706
707
|
v-if="extensionHeaderActions.length"
|
|
707
708
|
class="header-buttons"
|
|
708
709
|
>
|
|
710
|
+
<template v-for="action, i in extensionHeaderActions" :key="`${action.label}${i}`">
|
|
711
|
+
<!-- kubectl-explain.action | 2025/9/30隐藏 -->
|
|
709
712
|
<button
|
|
710
|
-
v-
|
|
711
|
-
:key="`${action.label}${i}`"
|
|
713
|
+
v-if="action.labelKey !== 'kubectl-explain.action'"
|
|
712
714
|
v-clean-tooltip="handleExtensionTooltip(action)"
|
|
713
715
|
v-shortkey="action.shortcutKey"
|
|
714
716
|
:disabled="action.enabled ? !action.enabled(ctx) : false"
|
|
@@ -728,6 +730,7 @@ export default {
|
|
|
728
730
|
color="header"
|
|
729
731
|
/>
|
|
730
732
|
</button>
|
|
733
|
+
</template>
|
|
731
734
|
</div>
|
|
732
735
|
|
|
733
736
|
<!-- ===== 用户菜单(右上角头像 + 下拉) ===== -->
|
|
@@ -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"
|
|
@@ -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,9 +962,9 @@ 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
|
|