美化default_toolbar.vue

This commit is contained in:
jingrow 2026-05-25 21:56:41 +08:00
parent d123212380
commit 52d6f7ee2c

View File

@ -1,25 +1,33 @@
<template>
<n-space align="center">
<!-- 直接按钮区可被 xxx_toolbar_menu.vue 覆盖 -->
<component v-if="menuOverrideComp" :is="menuOverrideComp" v-bind="toolbarBindProps"
@go-to-prev="goToPrev" @go-to-next="goToNext" @toggle-sidebar-position="$emit('toggle-sidebar-position')"
@refresh="$emit('refresh')" @delete="$emit('delete')" @toggle-like="handleToggleLike"
@toggle-chat="$emit('toggle-chat')" @go-back="$emit('go-back')" />
<DefaultToolbarMenu v-else v-bind="menuBindProps"
@go-to-prev="goToPrev" @go-to-next="goToNext" @toggle-sidebar-position="$emit('toggle-sidebar-position')"
@refresh="$emit('refresh')" @delete="$emit('delete')" @toggle-like="handleToggleLike"
@toggle-chat="$emit('toggle-chat')" @go-back="$emit('go-back')" />
<div class="toolbar-container">
<!-- 导航组//侧边栏切换 -->
<div class="toolbar-group">
<component v-if="menuOverrideComp" :is="menuOverrideComp" v-bind="toolbarBindProps"
@go-to-prev="goToPrev" @go-to-next="goToNext" @toggle-sidebar-position="$emit('toggle-sidebar-position')"
@refresh="$emit('refresh')" @delete="$emit('delete')" @toggle-like="handleToggleLike"
@toggle-chat="$emit('toggle-chat')" @go-back="$emit('go-back')" />
<DefaultToolbarMenu v-else v-bind="menuBindProps"
@go-to-prev="goToPrev" @go-to-next="goToNext" @toggle-sidebar-position="$emit('toggle-sidebar-position')"
@refresh="$emit('refresh')" @delete="$emit('delete')" @toggle-like="handleToggleLike"
@toggle-chat="$emit('toggle-chat')" @go-back="$emit('go-back')" />
</div>
<!-- 追加按钮xxx_toolbar_addmenu.vue -->
<component v-if="addMenuComp" :is="addMenuComp" v-bind="toolbarBindProps" />
<!-- 扩展组追加按钮 -->
<div v-if="addMenuComp" class="toolbar-group">
<component :is="addMenuComp" v-bind="toolbarBindProps" />
</div>
<!-- 三点菜单可被 xxx_toolbar_moremenu.vue 覆盖 -->
<component v-if="moreMenuOverrideComp" :is="moreMenuOverrideComp" v-bind="toolbarBindProps" @select="handleMenuSelect" />
<DefaultToolbarMoreMenu v-else :options="moreMenuOptions" @select="handleMenuSelect" />
<!-- 菜单组三点菜单 -->
<div class="toolbar-group">
<component v-if="moreMenuOverrideComp" :is="moreMenuOverrideComp" v-bind="toolbarBindProps" @select="handleMenuSelect" />
<DefaultToolbarMoreMenu v-else :options="moreMenuOptions" @select="handleMenuSelect" />
</div>
<!-- 追加菜单数据xxx_toolbar_addmoremenu.vue无视觉输出 -->
<component v-if="addMoreMenuComp" :is="addMoreMenuComp" ref="addMoreMenuRef" v-bind="toolbarBindProps" />
<!-- 操作组保存/提交/取消 -->
<div class="toolbar-group toolbar-group--actions">
<!-- 保存按钮 -->
<n-button
type="primary"
@ -98,13 +106,14 @@
<!-- Email Compose Drawer -->
<EmailComposeModal ref="emailComposeRef" />
</n-space>
</div><!-- /toolbar-group--actions -->
</div><!-- /toolbar-container -->
</template>
<script setup lang="ts">
import { ref, computed, onMounted, watchEffect, shallowRef, markRaw, h } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { NButton, NSpace, NIcon, NDropdown, NModal, NForm, NFormItem, NInput, NCheckbox, NText, useMessage, type FormInst, type FormRules, type DropdownOption } from 'naive-ui'
import { NButton, NIcon, NDropdown, NModal, NForm, NFormItem, NInput, NCheckbox, NText, useMessage, type FormInst, type FormRules, type DropdownOption } from 'naive-ui'
import { Icon } from '@iconify/vue'
import { t } from '@/shared/i18n'
import { usePageTypeSlug } from '@/shared/utils/slug'
@ -525,6 +534,25 @@ onMounted(async () => {
</script>
<style scoped>
/* 工具栏容器:水平排列,组间有间隔 */
.toolbar-container {
display: flex;
align-items: center;
gap: 12px;
}
/* 功能组:组内按钮紧密排列 */
.toolbar-group {
display: flex;
align-items: center;
gap: 4px;
}
/* 操作组(保存/提交/取消):稍宽松 */
.toolbar-group--actions {
gap: 6px;
}
/* 头部操作按钮统一样式 */
.header-action-btn {
display: inline-flex;