dashboard-shell-shell 1.0.1000000117 → 1.0.1000000118
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/styles/base/_functions.scss +0 -0
- package/assets/styles/base/_mixins.scss +1 -1
- package/assets/styles/global/_button.scss +10 -17
- package/assets/styles/global/_form.scss +2 -2
- package/assets/styles/global/_labeled-input.scss +2 -6
- package/assets/styles/global/_select.scss +7 -6
- package/assets/styles/global/_table.scss +2 -3
- package/assets/styles/global/_tooltip.scss +1 -8
- package/assets/styles/themes/_dark.scss +0 -2
- package/assets/styles/themes/_light.scss +2 -5
- package/assets/styles/vendor/vue-select.scss +1 -2
- package/assets/translations/en-us.yaml +3 -1
- package/assets/translations/zh-hans.yaml +28 -51
- package/components/ActionDropdown.vue +0 -1
- package/components/ActionMenuShell.vue +3 -6
- package/components/BrandImage.vue +0 -22
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +0 -1
- package/components/CruResource.vue +1 -1
- package/components/CruResourceFooter.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +24 -4
- package/components/GlobalRoleBindings.vue +48 -112
- package/components/IndentedPanel.vue +10 -4
- package/components/PromptRemove.vue +3 -3
- package/components/ResourceDetail/Masthead.vue +242 -190
- package/components/ResourceDetail/index.vue +5 -20
- package/components/ResourceList/Masthead.vue +84 -146
- package/components/ResourceList/ResourceLoadingIndicator.vue +2 -5
- package/components/ResourceTable.vue +1 -76
- package/components/SideNav.vue +29 -66
- package/components/SortableTable/THead.vue +0 -6
- package/components/SortableTable/index.vue +388 -481
- package/components/Tabbed/index.vue +5 -4
- package/components/auth/Principal.vue +2 -3
- package/components/auth/RoleDetailEdit.vue +5 -58
- package/components/auth/SelectPrincipal.vue +0 -1
- package/components/form/BannerSettings.vue +16 -18
- package/components/form/ChangePassword.vue +4 -4
- package/components/form/ColorInput.vue +8 -32
- package/components/form/Footer.vue +1 -1
- package/components/form/InputWithSelect.vue +0 -2
- package/components/form/KeyValue.vue +7 -31
- package/components/form/LabeledSelect.vue +178 -178
- package/components/form/Members/ClusterPermissionsEditor.vue +2 -1
- package/components/form/Members/MembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +11 -24
- package/components/form/Password.vue +2 -6
- package/components/form/ResourceQuota/Namespace.vue +1 -1
- package/components/form/ResourceQuota/NamespaceRow.vue +10 -13
- package/components/form/ResourceQuota/ProjectRow.vue +1 -0
- package/components/form/Select.vue +2 -2
- package/components/nav/Favorite.vue +1 -5
- package/components/nav/Group.vue +23 -69
- package/components/nav/Header.vue +17 -82
- package/components/nav/HeaderPageActionMenu.vue +0 -1
- package/components/nav/NamespaceFilter.vue +3 -0
- package/components/nav/TopLevelMenu.vue +119 -182
- package/components/nav/Type.vue +11 -48
- package/components/rancherResourceDetail/Masthead.vue +769 -0
- package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
- package/components/rancherResourceDetail/index.vue +591 -0
- package/components/rancherResourceList/Masthead.vue +375 -0
- package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
- package/components/rancherResourceList/index.vue +307 -0
- package/components/rancherResourceList/resource-list.config.js +7 -0
- package/components/rancherResourceTable.vue +783 -0
- package/components/rancherSortableTable/THead.vue +561 -0
- package/components/rancherSortableTable/actions.js +153 -0
- package/components/rancherSortableTable/advanced-filtering.js +272 -0
- package/components/rancherSortableTable/debug.js +117 -0
- package/components/rancherSortableTable/filtering.js +290 -0
- package/components/rancherSortableTable/grouping.js +48 -0
- package/components/rancherSortableTable/index.vue +2712 -0
- package/components/rancherSortableTable/paging.js +155 -0
- package/components/rancherSortableTable/selection.js +629 -0
- package/components/rancherSortableTable/sortable-config.ts +4 -0
- package/components/rancherSortableTable/sorting.js +129 -0
- package/composables/useClickOutside.ts +1 -1
- package/config/product/auth.js +7 -16
- package/config/product/explorer.js +1 -1
- package/config/product/settings.js +8 -17
- package/config/settings.ts +0 -28
- package/edit/management.cattle.io.user.vue +4 -17
- package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
- package/edit/token.vue +1 -1
- package/list/harvesterhci.io.management.cluster.vue +0 -17
- package/list/management.cattle.io.setting.vue +13 -22
- package/list/management.cattle.io.user.vue +14 -25
- package/list/provisioning.cattle.io.cluster.vue +7 -6
- package/mixins/brand.js +0 -17
- package/package.json +1 -1
- package/pages/auth/login.vue +29 -84
- package/pages/c/_cluster/auth/roles/index.vue +14 -61
- package/pages/c/_cluster/settings/banners.vue +101 -174
- package/pages/c/_cluster/settings/brand.vue +301 -348
- package/pages/c/_cluster/settings/performance.vue +38 -61
- package/pages/home.vue +21 -70
- package/pages/prefs.vue +23 -25
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/promptRemove/mixin/roleDeletionCheck.js +2 -2
- package/scripts/clean +0 -0
- package/scripts/extension/bundle +0 -0
- package/scripts/extension/helm/scripts/package +0 -0
- package/scripts/extension/helm/scripts/patch +0 -0
- package/scripts/extension/helm/scripts/version +0 -0
- package/scripts/extension/helmpatch +0 -0
- package/scripts/extension/parse-tag-name +0 -0
- package/scripts/extension/publish +0 -0
- package/scripts/publish-shell.sh +60 -86
- package/scripts/serve-pkgs +0 -0
- package/scripts/sync-shell-deps +0 -0
- package/scripts/typegen.sh +28 -44
- package/store/i18n.js +5 -5
- package/store/prefs.js +5 -17
- package/store/type-map.js +1 -2
- package/types/cloud-shell/index.d.ts +11014 -0
- package/types/shell/index.d.ts +1 -1
- package/utils/error.js +0 -4
- package/utils/router.js +3 -3
- package/vue.config.js +6 -1
- package/assets/images/action.svg +0 -6
- package/assets/images/pl/logo.png +0 -0
- /package/components/{ResourceList → rancherResourceList}/Masthead-btn.vue +0 -0
package/components/nav/Group.vue
CHANGED
|
@@ -8,11 +8,6 @@ export default {
|
|
|
8
8
|
emits: ['expand', 'close'],
|
|
9
9
|
|
|
10
10
|
props: {
|
|
11
|
-
loginName: {
|
|
12
|
-
type: String,
|
|
13
|
-
default: '',
|
|
14
|
-
},
|
|
15
|
-
|
|
16
11
|
depth: {
|
|
17
12
|
type: Number,
|
|
18
13
|
default: 0,
|
|
@@ -51,16 +46,8 @@ export default {
|
|
|
51
46
|
|
|
52
47
|
data() {
|
|
53
48
|
const id = (this.idPrefix || '') + this.group.name;
|
|
54
|
-
const icons = {
|
|
55
|
-
'虚拟机管理': 'icon-backupandsnapshot',
|
|
56
|
-
'网络管理': 'icon-networks',
|
|
57
|
-
'镜像管理': 'icon-imagelist',
|
|
58
|
-
'资源管理': 'icon-sorcetype',
|
|
59
|
-
'运维管理': 'icon-monitoringandlogging'
|
|
60
|
-
}
|
|
61
|
-
|
|
62
49
|
|
|
63
|
-
return { id, expanded: false
|
|
50
|
+
return { id, expanded: false };
|
|
64
51
|
},
|
|
65
52
|
|
|
66
53
|
computed: {
|
|
@@ -192,7 +179,8 @@ export default {
|
|
|
192
179
|
const withoutQuery = withoutHash.split('?')[0];
|
|
193
180
|
const itemFullPath = this.$router.resolve(item.route).fullPath;
|
|
194
181
|
|
|
195
|
-
if (matchesNavLevel || itemFullPath === withoutQuery) {
|
|
182
|
+
// if (matchesNavLevel || itemFullPath === withoutQuery) {
|
|
183
|
+
if (matchesNavLevel || itemFullPath === withoutQuery || withoutQuery.includes(itemFullPath)) {
|
|
196
184
|
return true;
|
|
197
185
|
} else if (parentPath && itemFullPath === parentPath) {
|
|
198
186
|
return true;
|
|
@@ -234,7 +222,6 @@ export default {
|
|
|
234
222
|
class="accordion"
|
|
235
223
|
:class="{[`depth-${depth}`]: true, 'expanded': isExpanded, 'has-children': hasChildren, 'group-highlight': isGroupActive}"
|
|
236
224
|
>
|
|
237
|
-
<!-- 分组标题区 -->
|
|
238
225
|
<div
|
|
239
226
|
v-if="showHeader"
|
|
240
227
|
class="header"
|
|
@@ -246,37 +233,26 @@ export default {
|
|
|
246
233
|
@keyup.enter="groupSelected()"
|
|
247
234
|
@keyup.space="groupSelected()"
|
|
248
235
|
>
|
|
249
|
-
|
|
250
|
-
<!-- 具名插槽 header,允许外部自定义标题内容 -->
|
|
251
236
|
<slot name="header">
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
:tabindex="-1"
|
|
260
|
-
>
|
|
261
|
-
<i v-if="!group.labelDisplay || (group.labelDisplay && group.labelDisplay.indexOf('</i>') === -1)" class="icon" :class="icons[group.label] ? icons[group.label] + ' init_icon' : 'icon-globe'" style="color: var(--muted);width: 32px;" />
|
|
237
|
+
<router-link
|
|
238
|
+
v-if="hasOverview"
|
|
239
|
+
:to="group.children[0].route"
|
|
240
|
+
:exact="group.children[0].exact"
|
|
241
|
+
:tabindex="-1"
|
|
242
|
+
>
|
|
243
|
+
<h6>
|
|
262
244
|
<span v-clean-html="group.labelDisplay || group.label" />
|
|
263
|
-
</
|
|
264
|
-
</
|
|
265
|
-
<!-- 虚拟机管理:icon-backupandsnapshot -->
|
|
266
|
-
<!-- 网络管理:icon-networks -->
|
|
267
|
-
<!-- 镜像管理:icon-imagelist -->
|
|
268
|
-
<!-- 资源管理:icon-sorcetype -->
|
|
269
|
-
<!-- 运维管理:icon-monitoringandlogging -->
|
|
270
|
-
<!-- 没有概览页的情况 -->
|
|
245
|
+
</h6>
|
|
246
|
+
</router-link>
|
|
271
247
|
<h6
|
|
272
248
|
v-else
|
|
249
|
+
@click="peek($event, true)"
|
|
273
250
|
>
|
|
274
|
-
|
|
275
|
-
|
|
251
|
+
<i :class="'nav-icon icon-'+group.name.replace(/\s+/g, '').toLowerCase()" />
|
|
252
|
+
{{ group.labelDisplay || group.label }}
|
|
253
|
+
<!-- <span v-clean-html="group.labelDisplay || group.label" /> -->
|
|
276
254
|
</h6>
|
|
277
255
|
</slot>
|
|
278
|
-
|
|
279
|
-
<!-- 折叠/展开图标 -->
|
|
280
256
|
<i
|
|
281
257
|
v-if="!onlyHasOverview && canCollapse"
|
|
282
258
|
class="icon toggle toggle-accordion"
|
|
@@ -289,8 +265,6 @@ export default {
|
|
|
289
265
|
@keyup.space="peek($event, true)"
|
|
290
266
|
/>
|
|
291
267
|
</div>
|
|
292
|
-
|
|
293
|
-
<!-- 子列表(Accordion 内容) -->
|
|
294
268
|
<ul
|
|
295
269
|
v-if="isExpanded"
|
|
296
270
|
class="list-unstyled body"
|
|
@@ -300,7 +274,6 @@ export default {
|
|
|
300
274
|
v-for="(child, idx) in group[childrenKey]"
|
|
301
275
|
:key="idx"
|
|
302
276
|
>
|
|
303
|
-
<!-- <template v-if="!(loginName && loginName !== 'admin' && child.label === '资源大盘')"></template> -->
|
|
304
277
|
<li
|
|
305
278
|
v-if="child.divider"
|
|
306
279
|
:key="idx"
|
|
@@ -346,19 +319,14 @@ export default {
|
|
|
346
319
|
position: relative;
|
|
347
320
|
cursor: pointer;
|
|
348
321
|
color: var(--body-text);
|
|
349
|
-
height:
|
|
322
|
+
height: 33px;
|
|
323
|
+
outline: none;
|
|
350
324
|
|
|
351
325
|
H6 {
|
|
352
326
|
color: var(--body-text);
|
|
353
327
|
user-select: none;
|
|
354
328
|
text-transform: none;
|
|
355
329
|
font-size: 14px;
|
|
356
|
-
.menuRouterLink {
|
|
357
|
-
color: var(--body-text);
|
|
358
|
-
user-select: none;
|
|
359
|
-
text-transform: none;
|
|
360
|
-
font-size: 14px;
|
|
361
|
-
}
|
|
362
330
|
}
|
|
363
331
|
|
|
364
332
|
> A {
|
|
@@ -399,9 +367,6 @@ export default {
|
|
|
399
367
|
/* padding: 8px 0 8px 16px;
|
|
400
368
|
font-weight: bold; */
|
|
401
369
|
color: var(--nav-hover-color);
|
|
402
|
-
.menuRouterLink {
|
|
403
|
-
color: var(--nav-hover-color);
|
|
404
|
-
}
|
|
405
370
|
}
|
|
406
371
|
I{
|
|
407
372
|
color: var(--nav-hover-color);
|
|
@@ -416,9 +381,6 @@ export default {
|
|
|
416
381
|
color: var(--nav-hover-color);
|
|
417
382
|
h6{
|
|
418
383
|
color: var(--nav-hover-color);
|
|
419
|
-
.menuRouterLink {
|
|
420
|
-
color: var(--nav-hover-color);
|
|
421
|
-
}
|
|
422
384
|
}
|
|
423
385
|
}
|
|
424
386
|
}
|
|
@@ -460,7 +422,6 @@ export default {
|
|
|
460
422
|
|
|
461
423
|
&.depth-1 {
|
|
462
424
|
> .header {
|
|
463
|
-
line-height: 50px;
|
|
464
425
|
> H6 {
|
|
465
426
|
font-size: 13px;
|
|
466
427
|
line-height: 16px;
|
|
@@ -470,13 +431,11 @@ export default {
|
|
|
470
431
|
padding: 9px 7px 8px 7px !important;
|
|
471
432
|
}
|
|
472
433
|
}
|
|
473
|
-
|
|
474
434
|
}
|
|
475
435
|
|
|
476
436
|
&:not(.depth-0) {
|
|
477
437
|
> .header {
|
|
478
|
-
padding-left:
|
|
479
|
-
line-height: 50px;
|
|
438
|
+
padding-left: 10px;
|
|
480
439
|
> H6 {
|
|
481
440
|
// Child groups that aren't linked themselves
|
|
482
441
|
display: inline-block;
|
|
@@ -487,9 +446,7 @@ export default {
|
|
|
487
446
|
position: absolute;
|
|
488
447
|
right: 0;
|
|
489
448
|
top: 0;
|
|
490
|
-
padding:
|
|
491
|
-
user-select: none;
|
|
492
|
-
line-height: 50px;
|
|
449
|
+
padding: 6px 8px 6px 8px;
|
|
493
450
|
}
|
|
494
451
|
}
|
|
495
452
|
}
|
|
@@ -502,9 +459,6 @@ export default {
|
|
|
502
459
|
A, A I {
|
|
503
460
|
/* color: var(--primary-hover-text); */
|
|
504
461
|
color: var(--nav-hover-color);
|
|
505
|
-
.menuRouterLink {
|
|
506
|
-
color: var(--nav-hover-color);
|
|
507
|
-
}
|
|
508
462
|
}
|
|
509
463
|
|
|
510
464
|
A {
|
|
@@ -534,9 +488,9 @@ export default {
|
|
|
534
488
|
}
|
|
535
489
|
}
|
|
536
490
|
}
|
|
537
|
-
|
|
538
|
-
.init_icon{
|
|
491
|
+
.nav-icon{
|
|
539
492
|
font-size: 32px;
|
|
540
|
-
|
|
493
|
+
margin-top: -11px;
|
|
494
|
+
color: #a8abb2;
|
|
541
495
|
}
|
|
542
496
|
</style>
|
|
@@ -277,18 +277,6 @@ export default {
|
|
|
277
277
|
},
|
|
278
278
|
|
|
279
279
|
methods: {
|
|
280
|
-
|
|
281
|
-
LogOutfn (type) {
|
|
282
|
-
sessionStorage.removeItem('TOPLEVELPERMISSIONS')
|
|
283
|
-
if (type === '1') {
|
|
284
|
-
this.$router.push({ name: 'account'})
|
|
285
|
-
} else if (type === '2') {
|
|
286
|
-
this.showSloModal()
|
|
287
|
-
} else if (type === '3') {
|
|
288
|
-
this.$router.push(this.generateLogoutRoute)
|
|
289
|
-
}
|
|
290
|
-
},
|
|
291
|
-
|
|
292
280
|
showSloModal() {
|
|
293
281
|
this.$store.dispatch('management/promptModal', {
|
|
294
282
|
component: 'SloDialog',
|
|
@@ -409,15 +397,11 @@ export default {
|
|
|
409
397
|
</script>
|
|
410
398
|
|
|
411
399
|
<template>
|
|
412
|
-
|
|
413
|
-
<!-- 整个页面的顶部 header -->
|
|
414
400
|
<header
|
|
415
401
|
ref="header"
|
|
416
402
|
data-testid="header"
|
|
417
403
|
>
|
|
418
404
|
<div>
|
|
419
|
-
|
|
420
|
-
<!-- 顶部一级菜单(根据不同产品/集群条件决定是否显示) -->
|
|
421
405
|
<TopLevelMenu v-if="isRancherInHarvester || isMultiCluster || !isSingleProduct" />
|
|
422
406
|
</div>
|
|
423
407
|
|
|
@@ -542,54 +526,34 @@ export default {
|
|
|
542
526
|
</div>
|
|
543
527
|
</div> -->
|
|
544
528
|
|
|
545
|
-
<!--
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
<!-- 如果是单产品模式且不是 RancherInHarvester,就显示 logo 路由跳转 -->
|
|
529
|
+
<!-- logo -->
|
|
530
|
+
<div class="menu-spacer">
|
|
549
531
|
<router-link
|
|
550
532
|
v-if="isSingleProduct && !isRancherInHarvester"
|
|
551
533
|
:to="singleProductLogoRoute"
|
|
552
534
|
>
|
|
553
|
-
|
|
554
|
-
<!-- 显示用户头像或 logo 图片 -->
|
|
555
|
-
<!-- <img
|
|
535
|
+
<img
|
|
556
536
|
:src="userIcon"
|
|
557
|
-
>
|
|
537
|
+
>
|
|
558
538
|
</router-link>
|
|
559
539
|
</div>
|
|
560
|
-
|
|
561
|
-
<!-- ===== 中间占位符(把左右内容分开) ===== -->
|
|
540
|
+
<!-- 中间 -->
|
|
562
541
|
<div class="spacer" />
|
|
563
542
|
|
|
564
|
-
<!-- ===== 右侧功能区域 ===== -->
|
|
565
543
|
<div class="rd-header-right">
|
|
566
|
-
|
|
567
|
-
<!-- 动态插入右侧自定义组件(例如插件扩展的 header) -->
|
|
568
544
|
<component :is="navHeaderRight" />
|
|
569
|
-
|
|
570
|
-
<!-- ===== 集群/命名空间过滤器 ===== -->
|
|
571
545
|
<div
|
|
572
546
|
v-if="showFilter"
|
|
573
547
|
class="top"
|
|
574
548
|
>
|
|
575
|
-
|
|
576
|
-
<!-- 如果集群就绪 + 当前产品支持命名空间过滤器 或 Explorer 模式 -->
|
|
577
549
|
<NamespaceFilter v-if="clusterReady && currentProduct && (currentProduct.showNamespaceFilter || isExplorer)" />
|
|
578
|
-
|
|
579
|
-
<!-- 否则显示工作空间切换器 -->
|
|
580
550
|
<WorkspaceSwitcher v-else-if="clusterReady && currentProduct && currentProduct.showWorkspaceSwitcher" />
|
|
581
551
|
</div>
|
|
582
|
-
|
|
583
|
-
<!-- ===== 集群相关按钮(仅在有集群且不是 simple 模式下显示) ===== -->
|
|
584
552
|
<div
|
|
585
553
|
v-if="currentCluster && !simple"
|
|
586
554
|
class="header-buttons"
|
|
587
555
|
>
|
|
588
|
-
|
|
589
|
-
<!-- 如果当前产品支持集群切换器 -->
|
|
590
556
|
<template v-if="currentProduct && currentProduct.showClusterSwitcher">
|
|
591
|
-
|
|
592
|
-
<!-- 导入 YAML 按钮 -->
|
|
593
557
|
<button
|
|
594
558
|
v-if="showImportYaml"
|
|
595
559
|
v-clean-tooltip="t('nav.import')"
|
|
@@ -604,8 +568,6 @@ export default {
|
|
|
604
568
|
>
|
|
605
569
|
<i class="icon icon-upload icon-lg" />
|
|
606
570
|
</button>
|
|
607
|
-
|
|
608
|
-
<!-- 导入 YAML 弹窗 -->
|
|
609
571
|
<app-modal
|
|
610
572
|
v-if="showImportModal"
|
|
611
573
|
class="import-modal"
|
|
@@ -621,7 +583,6 @@ export default {
|
|
|
621
583
|
/>
|
|
622
584
|
</app-modal>
|
|
623
585
|
|
|
624
|
-
<!-- KubeShell 终端按钮 -->
|
|
625
586
|
<button
|
|
626
587
|
v-if="showKubeShell"
|
|
627
588
|
id="btn-kubectl"
|
|
@@ -639,7 +600,6 @@ export default {
|
|
|
639
600
|
<i class="icon icon-terminal icon-lg" />
|
|
640
601
|
</button>
|
|
641
602
|
|
|
642
|
-
<!-- 下载 kubeconfig 按钮 -->
|
|
643
603
|
<button
|
|
644
604
|
v-if="showKubeConfig"
|
|
645
605
|
v-clean-tooltip="t('nav.kubeconfig.download')"
|
|
@@ -655,7 +615,6 @@ export default {
|
|
|
655
615
|
<i class="icon icon-file icon-lg" />
|
|
656
616
|
</button>
|
|
657
617
|
|
|
658
|
-
<!-- 复制 kubeconfig 按钮 -->
|
|
659
618
|
<button
|
|
660
619
|
v-if="showCopyConfig"
|
|
661
620
|
v-clean-tooltip="t('nav.kubeconfig.copy')"
|
|
@@ -668,14 +627,10 @@ export default {
|
|
|
668
627
|
:aria-label="t('nav.kubeconfig.copy')"
|
|
669
628
|
@click="copyKubeConfig($event)"
|
|
670
629
|
>
|
|
671
|
-
|
|
672
|
-
<!-- 点击复制后显示对勾 -->
|
|
673
630
|
<i
|
|
674
631
|
v-if="kubeConfigCopying"
|
|
675
632
|
class="icon icon-checkmark icon-lg"
|
|
676
633
|
/>
|
|
677
|
-
|
|
678
|
-
<!-- 未复制状态显示复制图标 -->
|
|
679
634
|
<i
|
|
680
635
|
v-else
|
|
681
636
|
class="icon icon-copy icon-lg"
|
|
@@ -683,7 +638,6 @@ export default {
|
|
|
683
638
|
</button>
|
|
684
639
|
</template>
|
|
685
640
|
|
|
686
|
-
<!-- 资源搜索按钮 -->
|
|
687
641
|
<button
|
|
688
642
|
v-if="showSearch"
|
|
689
643
|
id="header-btn-search"
|
|
@@ -700,8 +654,6 @@ export default {
|
|
|
700
654
|
>
|
|
701
655
|
<i class="icon icon-search icon-lg" />
|
|
702
656
|
</button>
|
|
703
|
-
|
|
704
|
-
<!-- 搜索弹窗 -->
|
|
705
657
|
<app-modal
|
|
706
658
|
v-if="showSearch && showSearchModal"
|
|
707
659
|
class="search-modal"
|
|
@@ -716,7 +668,7 @@ export default {
|
|
|
716
668
|
</app-modal>
|
|
717
669
|
</div>
|
|
718
670
|
|
|
719
|
-
<!--
|
|
671
|
+
<!-- Extension header actions -->
|
|
720
672
|
<div
|
|
721
673
|
v-if="extensionHeaderActions.length"
|
|
722
674
|
class="header-buttons"
|
|
@@ -745,16 +697,12 @@ export default {
|
|
|
745
697
|
</button>
|
|
746
698
|
</div>
|
|
747
699
|
|
|
748
|
-
<!-- ===== 用户菜单(右上角头像 + 下拉) ===== -->
|
|
749
700
|
<div class="center-self">
|
|
750
701
|
<header-page-action-menu v-if="showPageActions" />
|
|
751
|
-
|
|
752
702
|
<rc-dropdown
|
|
753
703
|
v-if="showUserMenu"
|
|
754
704
|
:aria-label="t('nav.userMenu.label')"
|
|
755
705
|
>
|
|
756
|
-
|
|
757
|
-
<!-- 头像触发按钮 -->
|
|
758
706
|
<rc-dropdown-trigger
|
|
759
707
|
ghost
|
|
760
708
|
small
|
|
@@ -773,11 +721,9 @@ export default {
|
|
|
773
721
|
v-else
|
|
774
722
|
class="icon icon-user icon-3x avatar"
|
|
775
723
|
/> -->
|
|
776
|
-
<i class="icon icon-usericon"
|
|
724
|
+
<i class="icon icon-usericon" />
|
|
777
725
|
<span class="login-name">{{ principal.loginName }}</span>
|
|
778
726
|
</rc-dropdown-trigger>
|
|
779
|
-
|
|
780
|
-
<!-- 下拉菜单内容 -->
|
|
781
727
|
<template #dropdownCollection>
|
|
782
728
|
<!-- <template v-if="authEnabled">
|
|
783
729
|
<div class="user-info">
|
|
@@ -798,27 +744,21 @@ export default {
|
|
|
798
744
|
>
|
|
799
745
|
{{ t('nav.userMenu.preferences') }}
|
|
800
746
|
</rc-dropdown-item> -->
|
|
801
|
-
|
|
802
|
-
<!-- 退出登录(支持 SLO 弹窗) -->
|
|
803
747
|
<rc-dropdown-item
|
|
804
748
|
v-if="showAccountAndApiKeyLink"
|
|
805
|
-
@click="
|
|
749
|
+
@click="$router.push({ name: 'account'})"
|
|
806
750
|
>
|
|
807
751
|
{{ t('nav.userMenu.accountAndKeys', {}, true) }}
|
|
808
752
|
</rc-dropdown-item>
|
|
809
|
-
|
|
810
|
-
<!-- 普通退出登录 -->
|
|
811
753
|
<rc-dropdown-item
|
|
812
754
|
v-if="authEnabled && shouldShowSloLogoutModal"
|
|
813
|
-
@click="
|
|
755
|
+
@click="showSloModal"
|
|
814
756
|
>
|
|
815
757
|
{{ t('nav.userMenu.logOut') }}
|
|
816
758
|
</rc-dropdown-item>
|
|
817
|
-
|
|
818
|
-
<!-- 普通退出登录 -->
|
|
819
759
|
<rc-dropdown-item
|
|
820
760
|
v-else-if="authEnabled"
|
|
821
|
-
@click="
|
|
761
|
+
@click="$router.push(generateLogoutRoute)"
|
|
822
762
|
>
|
|
823
763
|
{{ t('nav.userMenu.logOut') }}
|
|
824
764
|
</rc-dropdown-item>
|
|
@@ -1004,8 +944,6 @@ export default {
|
|
|
1004
944
|
// Spacing between header buttons
|
|
1005
945
|
.btn:not(:last-of-type) {
|
|
1006
946
|
margin-right: 10px;
|
|
1007
|
-
width: 30px;
|
|
1008
|
-
min-width: 30px;
|
|
1009
947
|
}
|
|
1010
948
|
|
|
1011
949
|
.btn:focus {
|
|
@@ -1027,8 +965,6 @@ export default {
|
|
|
1027
965
|
|
|
1028
966
|
.header-btn {
|
|
1029
967
|
width: 40px;
|
|
1030
|
-
display: flex;
|
|
1031
|
-
align-items: center;
|
|
1032
968
|
}
|
|
1033
969
|
|
|
1034
970
|
:deep() div .btn.role-tertiary {
|
|
@@ -1036,21 +972,19 @@ export default {
|
|
|
1036
972
|
border: none;
|
|
1037
973
|
background: var(--header-btn-bg);
|
|
1038
974
|
color: var(--header-btn-text);
|
|
1039
|
-
padding: 0
|
|
975
|
+
padding: 0 10px;
|
|
1040
976
|
line-height: 32px;
|
|
1041
977
|
min-height: 32px;
|
|
1042
|
-
width: 30px;
|
|
1043
|
-
min-width: 30px;
|
|
1044
978
|
|
|
1045
979
|
i {
|
|
1046
980
|
// Ideally same height as the parent button, but this means tooltip needs adjusting (which is it's own can of worms)
|
|
1047
981
|
line-height: 20px;
|
|
1048
982
|
}
|
|
1049
983
|
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
984
|
+
&:hover {
|
|
985
|
+
background: var(--primary);
|
|
986
|
+
color: #fff;
|
|
987
|
+
}
|
|
1054
988
|
|
|
1055
989
|
&[disabled=disabled] {
|
|
1056
990
|
background-color: rgba(0,0,0,0.25) !important;
|
|
@@ -1133,6 +1067,7 @@ export default {
|
|
|
1133
1067
|
> .center-self {
|
|
1134
1068
|
align-self: center;
|
|
1135
1069
|
display: flex;
|
|
1070
|
+
gap: 1rem;
|
|
1136
1071
|
align-items: center;
|
|
1137
1072
|
padding-right: 1rem;
|
|
1138
1073
|
}
|
|
@@ -1241,7 +1176,7 @@ export default {
|
|
|
1241
1176
|
.login-name{
|
|
1242
1177
|
font-size: 14px;
|
|
1243
1178
|
margin-left: 5px;
|
|
1244
|
-
|
|
1179
|
+
margin-top: 5px;
|
|
1245
1180
|
line-height: 20px;
|
|
1246
1181
|
}
|
|
1247
1182
|
</style>
|
|
@@ -145,6 +145,9 @@ export default {
|
|
|
145
145
|
|
|
146
146
|
const params = { ...this.$route.params };
|
|
147
147
|
let resource = params.resource;
|
|
148
|
+
if (params.resource) {
|
|
149
|
+
resource = resource
|
|
150
|
+
}
|
|
148
151
|
|
|
149
152
|
// Sometimes, different pages may have different namespaces to filter
|
|
150
153
|
const notFilterNamespaces = this.$store.getters[`type-map/optionsFor`](resource).notFilterNamespace || [];
|