Skip to content

Commit b933710

Browse files
committed
Refactor: relocate eye button to bottom to improve ChatView‘s layout
1 parent 6d0f08f commit b933710

File tree

2 files changed

+33
-22
lines changed

2 files changed

+33
-22
lines changed

webview-ui/src/components/chat/AutoApproveMenu.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useMemo, useState } from "react"
1+
import { useCallback, useMemo } from "react" // Removed useState
22
import { Trans } from "react-i18next"
33
import { VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
44

@@ -9,10 +9,12 @@ import { AutoApproveToggle, AutoApproveSetting, autoApproveSettingsConfig } from
99

1010
interface AutoApproveMenuProps {
1111
style?: React.CSSProperties
12+
isExpanded: boolean
13+
onToggleExpanded: () => void
1214
}
1315

14-
const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
15-
const [isExpanded, setIsExpanded] = useState(false)
16+
const AutoApproveMenu = ({ style, isExpanded, onToggleExpanded }: AutoApproveMenuProps) => {
17+
// const [isExpanded, setIsExpanded] = useState(false) // State lifted to parent
1618

1719
const {
1820
autoApprovalEnabled,
@@ -80,7 +82,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
8082
],
8183
)
8284

83-
const toggleExpanded = useCallback(() => setIsExpanded((prev) => !prev), [])
85+
// const toggleExpanded = useCallback(() => setIsExpanded((prev) => !prev), []) // Handler lifted to parent
8486

8587
const toggles = useMemo(
8688
() => ({
@@ -119,7 +121,6 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
119121
return (
120122
<div
121123
style={{
122-
padding: "0 15px",
123124
userSelect: "none",
124125
borderTop: isExpanded
125126
? `0.5px solid color-mix(in srgb, var(--vscode-titleBar-inactiveForeground) 20%, transparent)`
@@ -135,7 +136,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
135136
padding: isExpanded ? "8px 0" : "8px 0 0 0",
136137
cursor: "pointer",
137138
}}
138-
onClick={toggleExpanded}>
139+
onClick={onToggleExpanded}>
139140
<div onClick={(e) => e.stopPropagation()}>
140141
<VSCodeCheckbox
141142
checked={autoApprovalEnabled ?? false}

webview-ui/src/components/chat/ChatView.tsx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
9090

9191
// Initialize expanded state based on the persisted setting (default to expanded if undefined)
9292
const [isExpanded, setIsExpanded] = useState(
93+
// This is for the history preview
9394
historyPreviewCollapsed === undefined ? true : !historyPreviewCollapsed,
9495
)
96+
const [isAutoApproveMenuExpanded, setIsAutoApproveMenuExpanded] = useState(false) // New state for AutoApproveMenu
9597

9698
const toggleExpanded = useCallback(() => {
9799
const newState = !isExpanded
@@ -100,6 +102,11 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
100102
vscode.postMessage({ type: "setHistoryPreviewCollapsed", bool: !newState })
101103
}, [isExpanded])
102104

105+
const toggleAutoApproveMenuExpanded = useCallback(() => {
106+
// New callback for AutoApproveMenu
107+
setIsAutoApproveMenuExpanded((prev) => !prev)
108+
}, [])
109+
103110
// Leaving this less safe version here since if the first message is not a
104111
// task, then the extension is in a bad state and needs to be debugged (see
105112
// Cline.abort).
@@ -1234,19 +1241,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
12341241
</>
12351242
) : (
12361243
<div className="flex-1 min-h-0 overflow-y-auto flex flex-col gap-4">
1237-
{/* Moved Task Bar Header Here */}
1238-
{tasks.length !== 0 && (
1239-
<div className="flex text-vscode-descriptionForeground w-full mx-auto px-5 pt-3">
1240-
<div className="flex items-center gap-1 cursor-pointer" onClick={toggleExpanded}>
1241-
{tasks.length < 10 && (
1242-
<span className={`font-medium text-xs `}>{t("history:recentTasks")}</span>
1243-
)}
1244-
<span
1245-
className={`codicon ${isExpanded ? "codicon-eye" : "codicon-eye-closed"} scale-90`}
1246-
/>
1247-
</div>
1248-
</div>
1249-
)}
12501244
<div
12511245
className={` w-full flex flex-col gap-4 m-auto ${isExpanded && tasks.length > 0 ? "mt-0" : ""} px-3.5 min-[370px]:px-10 pt-5 transition-all duration-300`}>
12521246
<RooHero />
@@ -1286,8 +1280,21 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
12861280
// but becomes scrollable when the viewport is too small
12871281
*/}
12881282
{!task && (
1289-
<div className="mb-[-2px] flex-initial min-h-0">
1290-
<AutoApproveMenu />
1283+
<div className={`mb-[-2px] flex-initial min-h-0 flex items-end justify-between px-5 pt-3`}>
1284+
{!isAutoApproveMenuExpanded && (
1285+
<div className="flex text-vscode-descriptionForeground flex-shrink-0 mb-1 mr-2.5">
1286+
<div className="flex items-center gap-1 cursor-pointer" onClick={toggleExpanded}>
1287+
<span
1288+
className={`codicon ${isExpanded ? "codicon-eye" : "codicon-eye-closed"} scale-90`}
1289+
/>
1290+
<span className={`font-medium text-xs `}>{t("history:recentTasks")}</span>
1291+
</div>
1292+
</div>
1293+
)}
1294+
<AutoApproveMenu
1295+
isExpanded={isAutoApproveMenuExpanded}
1296+
onToggleExpanded={toggleAutoApproveMenuExpanded}
1297+
/>
12911298
</div>
12921299
)}
12931300

@@ -1316,7 +1323,10 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
13161323
initialTopMostItemIndex={groupedMessages.length - 1}
13171324
/>
13181325
</div>
1319-
<AutoApproveMenu />
1326+
<AutoApproveMenu
1327+
isExpanded={isAutoApproveMenuExpanded}
1328+
onToggleExpanded={toggleAutoApproveMenuExpanded}
1329+
/>
13201330
{showScrollToBottom ? (
13211331
<div className="flex px-[15px] pt-[10px]">
13221332
<div

0 commit comments

Comments
 (0)