mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-26 11:58:28 +02:00
Untoggle sidebar fully on untoggling (#2179)
* add explicit untoggle * add to all history sidebars * add back commented out line * add comment
This commit is contained in:
@@ -42,8 +42,18 @@ export default function SidebarWrapper<T extends object>({
|
||||
size = "sm",
|
||||
}: SidebarWrapperProps<T>) {
|
||||
const [toggledSidebar, setToggledSidebar] = useState(initiallyToggled);
|
||||
|
||||
const [showDocSidebar, setShowDocSidebar] = useState(false); // State to track if sidebar is open
|
||||
// Used to maintain a "time out" for history sidebar so our existing refs can have time to process change
|
||||
const [untoggled, setUntoggled] = useState(false);
|
||||
|
||||
const explicitlyUntoggle = () => {
|
||||
setShowDocSidebar(false);
|
||||
|
||||
setUntoggled(true);
|
||||
setTimeout(() => {
|
||||
setUntoggled(false);
|
||||
}, 200);
|
||||
};
|
||||
|
||||
const toggleSidebar = () => {
|
||||
Cookies.set(
|
||||
@@ -103,7 +113,7 @@ export default function SidebarWrapper<T extends object>({
|
||||
duration-300
|
||||
ease-in-out
|
||||
${
|
||||
showDocSidebar || toggledSidebar
|
||||
!untoggled && (showDocSidebar || toggledSidebar)
|
||||
? "opacity-100 w-[250px] translate-x-0"
|
||||
: "opacity-0 w-[200px] pointer-events-none -translate-x-10"
|
||||
}`}
|
||||
@@ -111,6 +121,7 @@ export default function SidebarWrapper<T extends object>({
|
||||
<div className="w-full relative">
|
||||
<HistorySidebar
|
||||
page={page}
|
||||
explicitlyUntoggle={explicitlyUntoggle}
|
||||
ref={innerSidebarElementRef}
|
||||
toggleSidebar={toggleSidebar}
|
||||
toggled={toggledSidebar}
|
||||
|
@@ -1202,6 +1202,17 @@ export function ChatPage({
|
||||
|
||||
const [showDocSidebar, setShowDocSidebar] = useState(false); // State to track if sidebar is open
|
||||
|
||||
// Used to maintain a "time out" for history sidebar so our existing refs can have time to process change
|
||||
const [untoggled, setUntoggled] = useState(false);
|
||||
|
||||
const explicitlyUntoggle = () => {
|
||||
setShowDocSidebar(false);
|
||||
|
||||
setUntoggled(true);
|
||||
setTimeout(() => {
|
||||
setUntoggled(false);
|
||||
}, 200);
|
||||
};
|
||||
const toggleSidebar = () => {
|
||||
Cookies.set(
|
||||
SIDEBAR_TOGGLED_COOKIE_NAME,
|
||||
@@ -1393,13 +1404,14 @@ export function ChatPage({
|
||||
duration-300
|
||||
ease-in-out
|
||||
${
|
||||
showDocSidebar || toggledSidebar
|
||||
!untoggled && (showDocSidebar || toggledSidebar)
|
||||
? "opacity-100 w-[250px] translate-x-0"
|
||||
: "opacity-0 w-[200px] pointer-events-none -translate-x-10"
|
||||
}`}
|
||||
>
|
||||
<div className="w-full relative">
|
||||
<HistorySidebar
|
||||
explicitlyUntoggle={explicitlyUntoggle}
|
||||
stopGenerating={stopGeneration}
|
||||
reset={() => setMessage("")}
|
||||
page="chat"
|
||||
|
@@ -41,6 +41,7 @@ interface HistorySidebarProps {
|
||||
showShareModal?: (chatSession: ChatSession) => void;
|
||||
showDeleteModal?: (chatSession: ChatSession) => void;
|
||||
stopGenerating?: () => void;
|
||||
explicitlyUntoggle: () => void;
|
||||
}
|
||||
|
||||
export const HistorySidebar = forwardRef<HTMLDivElement, HistorySidebarProps>(
|
||||
@@ -53,6 +54,7 @@ export const HistorySidebar = forwardRef<HTMLDivElement, HistorySidebarProps>(
|
||||
currentChatSession,
|
||||
folders,
|
||||
openedFolders,
|
||||
explicitlyUntoggle,
|
||||
toggleSidebar,
|
||||
removeToggle,
|
||||
stopGenerating = () => null,
|
||||
@@ -114,6 +116,7 @@ export const HistorySidebar = forwardRef<HTMLDivElement, HistorySidebarProps>(
|
||||
toggled={toggled}
|
||||
page={page}
|
||||
toggleSidebar={toggleSidebar}
|
||||
explicitlyUntoggle={explicitlyUntoggle}
|
||||
/>
|
||||
{page == "chat" && (
|
||||
<div className="mx-3 mt-4 gap-y-1 flex-col flex gap-x-1.5 items-center items-center">
|
||||
|
@@ -73,7 +73,6 @@ export default function FunctionalHeader({
|
||||
toggleSidebar={toggleSidebar}
|
||||
handleNewChat={handleNewChat}
|
||||
/>
|
||||
|
||||
<div
|
||||
style={{ transition: "width 0.30s ease-out" }}
|
||||
className={`
|
||||
|
@@ -21,6 +21,7 @@ export default function LogoType({
|
||||
toggled,
|
||||
showArrow,
|
||||
assistantId,
|
||||
explicitlyUntoggle = () => null,
|
||||
}: {
|
||||
hideOnMobile?: boolean;
|
||||
toggleSidebar?: () => void;
|
||||
@@ -29,6 +30,7 @@ export default function LogoType({
|
||||
toggled?: boolean;
|
||||
showArrow?: boolean;
|
||||
assistantId?: number;
|
||||
explicitlyUntoggle?: () => void;
|
||||
}) {
|
||||
const combinedSettings = useContext(SettingsContext);
|
||||
const enterpriseSettings = combinedSettings?.enterpriseSettings;
|
||||
@@ -91,12 +93,20 @@ export default function LogoType({
|
||||
</Link>
|
||||
</Tooltip>
|
||||
)}
|
||||
{showArrow && (
|
||||
{showArrow && toggleSidebar && (
|
||||
<Tooltip
|
||||
delayDuration={0}
|
||||
content={toggled ? `Unpin sidebar` : "Pin sidebar"}
|
||||
>
|
||||
<button className="mr-3 my-auto ml-auto" onClick={toggleSidebar}>
|
||||
<button
|
||||
className="mr-3 my-auto ml-auto"
|
||||
onClick={() => {
|
||||
toggleSidebar();
|
||||
if (toggled) {
|
||||
explicitlyUntoggle();
|
||||
}
|
||||
}}
|
||||
>
|
||||
{!toggled && !combinedSettings?.isMobile ? (
|
||||
<RightToLineIcon />
|
||||
) : (
|
||||
|
@@ -512,6 +512,18 @@ export const SearchSection = ({
|
||||
const [firstSearch, setFirstSearch] = useState(true);
|
||||
const [searchState, setSearchState] = useState<searchState>("input");
|
||||
|
||||
// Used to maintain a "time out" for history sidebar so our existing refs can have time to process change
|
||||
const [untoggled, setUntoggled] = useState(false);
|
||||
|
||||
const explicitlyUntoggle = () => {
|
||||
setShowDocSidebar(false);
|
||||
|
||||
setUntoggled(true);
|
||||
setTimeout(() => {
|
||||
setUntoggled(false);
|
||||
}, 200);
|
||||
};
|
||||
|
||||
useSidebarVisibility({
|
||||
toggledSidebar,
|
||||
sidebarElementRef,
|
||||
@@ -600,7 +612,7 @@ export const SearchSection = ({
|
||||
duration-300
|
||||
ease-in-out
|
||||
${
|
||||
showDocSidebar || toggledSidebar
|
||||
!untoggled && (showDocSidebar || toggledSidebar)
|
||||
? "opacity-100 w-[250px] translate-x-0"
|
||||
: "opacity-0 w-[200px] pointer-events-none -translate-x-10"
|
||||
}
|
||||
@@ -608,6 +620,7 @@ export const SearchSection = ({
|
||||
>
|
||||
<div className="w-full relative">
|
||||
<HistorySidebar
|
||||
explicitlyUntoggle={explicitlyUntoggle}
|
||||
reset={() => setQuery("")}
|
||||
page="search"
|
||||
ref={innerSidebarElementRef}
|
||||
|
Reference in New Issue
Block a user