fix: 修复侧边栏UI BUG

This commit is contained in:
Wenjie Zhang 2025-05-18 17:58:27 +08:00
parent aeaeaad909
commit e803a79813
2 changed files with 31 additions and 11 deletions

View File

@ -5,12 +5,13 @@
:current-chat-id="currentChatId"
:chats-list="chatsList"
:is-sidebar-open="state.isSidebarOpen"
:is-initial-render="state.isInitialRender"
@create-chat="createNewChat"
@select-chat="selectChat"
@delete-chat="deleteChat"
@rename-chat="renameChat"
@toggle-sidebar="toggleSidebar"
:class="{'floating-sidebar': isSmallContainer, 'collapsed': !state.isSidebarOpen && isSmallContainer}"
:class="{'floating-sidebar': isSmallContainer, 'sidebar-open': state.isSidebarOpen, 'no-transition': state.isInitialRender}"
/>
<div class="sidebar-backdrop" v-if="state.isSidebarOpen && isSmallContainer" @click="toggleSidebar"></div>
<div class="chat">
@ -129,10 +130,11 @@ const props = defineProps({
const state = reactive({
...props.state,
debug_mode: computed(() => props.state.debug_mode ?? false),
isSidebarOpen: false,
isSidebarOpen: localStorage.getItem('chat_sidebar_open') === 'true' || false,
waitingServerResponse: false,
isProcessingRequest: false,
creatingNewChat: false
creatingNewChat: false,
isInitialRender: true
});
//
@ -159,6 +161,11 @@ onMounted(() => {
resizeObserver.observe(chatContainerRef.value);
}
});
//
setTimeout(() => {
state.isInitialRender = false;
}, 300);
});
onUnmounted(() => {
@ -671,6 +678,7 @@ const scrollToBottom = async () => {
const toggleSidebar = () => {
state.isSidebarOpen = !state.isSidebarOpen;
localStorage.setItem('chat_sidebar_open', state.isSidebarOpen);
console.log("toggleSidebar", state.isSidebarOpen);
}
@ -774,6 +782,10 @@ const mergeMessageChunk = (chunks) => {
width: 80% !important;
max-width: 300px;
&.no-transition {
transition: none !important;
}
&.collapsed {
transform: translateX(-100%);
}

View File

@ -1,5 +1,5 @@
<template>
<div class="chat-sidebar" :class="{ 'collapsed': !props.isSidebarOpen }">
<div class="chat-sidebar" :class="{'sidebar-open': isSidebarOpen, 'no-transition': isInitialRender}">
<div class="sidebar-header">
<div class="header-title">{{ currentAgentId }}</div>
<div class="header-actions">
@ -78,6 +78,10 @@ const props = defineProps({
isSidebarOpen: {
type: Boolean,
default: false
},
isInitialRender: {
type: Boolean,
default: false
}
});
@ -86,7 +90,6 @@ const emit = defineEmits(['create-chat', 'select-chat', 'delete-chat', 'rename-c
//
const loading = ref(false);
//
const createNewChat = () => {
emit('create-chat');
@ -157,18 +160,23 @@ const toggleCollapse = () => {
<style lang="less" scoped>
.chat-sidebar {
width: 280px;
width: 0;
height: 100%;
background-color: #f9f9f9;
border-right: 1px solid #e8e8e8;
transition: all 0.3s ease;
display: flex;
flex-direction: column;
border: none;
overflow: hidden;
&.collapsed {
width: 0;
border: none;
overflow: hidden;
&.no-transition {
transition: none !important;
}
&.sidebar-open {
width: 280px;
max-width: 300px;
border-right: 1px solid #e8e8e8;
}
.sidebar-header {