fix(app): show tree while opening files (#36018)
This commit is contained in:
@@ -74,6 +74,10 @@ test("opens and searches project files inline", async ({ page }) => {
|
|||||||
"opencode.global.dat:layout",
|
"opencode.global.dat:layout",
|
||||||
JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }),
|
JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }),
|
||||||
)
|
)
|
||||||
|
localStorage.setItem(
|
||||||
|
"opencode.global.dat:review-panel-v2",
|
||||||
|
JSON.stringify({ sidebarOpened: false, sidebarWidth: 240, expandMode: "collapse" }),
|
||||||
|
)
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
"opencode.window.browser.dat:tabs",
|
"opencode.window.browser.dat:tabs",
|
||||||
JSON.stringify([{ type: "session", server, sessionId: sessionID }]),
|
JSON.stringify([{ type: "session", server, sessionId: sessionID }]),
|
||||||
@@ -86,13 +90,16 @@ test("opens and searches project files inline", async ({ page }) => {
|
|||||||
await expectSessionTitle(page, title)
|
await expectSessionTitle(page, title)
|
||||||
|
|
||||||
const panel = page.locator("#review-panel")
|
const panel = page.locator("#review-panel")
|
||||||
|
const sidebar = panel.locator('[data-slot="session-review-v2-sidebar"]')
|
||||||
const contextButton = page.getByRole("button", { name: "View context usage" })
|
const contextButton = page.getByRole("button", { name: "View context usage" })
|
||||||
await contextButton.click()
|
await contextButton.click()
|
||||||
await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "")
|
await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "")
|
||||||
await panel.getByRole("button", { name: "Open file" }).click()
|
await panel.getByRole("button", { name: "Open file" }).click()
|
||||||
await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "")
|
await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "")
|
||||||
|
await expect(sidebar).toBeVisible()
|
||||||
await contextButton.click()
|
await contextButton.click()
|
||||||
await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "")
|
await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "")
|
||||||
|
await expect(sidebar).toHaveCount(0)
|
||||||
await panel.getByRole("button", { name: "Open file" }).click()
|
await panel.getByRole("button", { name: "Open file" }).click()
|
||||||
const filter = panel.getByRole("combobox", { name: "Filter files" })
|
const filter = panel.getByRole("combobox", { name: "Filter files" })
|
||||||
await expect(filter).toBeFocused()
|
await expect(filter).toBeFocused()
|
||||||
@@ -102,9 +109,11 @@ test("opens and searches project files inline", async ({ page }) => {
|
|||||||
await panel.getByRole("button", { name: "README.md" }).click()
|
await panel.getByRole("button", { name: "README.md" }).click()
|
||||||
await expect(panel.getByRole("tab", { name: "README.md" })).toHaveAttribute("data-selected", "")
|
await expect(panel.getByRole("tab", { name: "README.md" })).toHaveAttribute("data-selected", "")
|
||||||
await expect(panel.getByText("contents:README.md", { exact: true })).toBeVisible()
|
await expect(panel.getByText("contents:README.md", { exact: true })).toBeVisible()
|
||||||
|
await expect(sidebar).toHaveCount(0)
|
||||||
|
|
||||||
await panel.getByRole("button", { name: "Open file" }).click()
|
await panel.getByRole("button", { name: "Open file" }).click()
|
||||||
await expect(panel.getByRole("tab", { name: "README.md" })).toHaveCount(0)
|
await expect(panel.getByRole("tab", { name: "README.md" })).toHaveCount(0)
|
||||||
|
await expect(sidebar).toBeVisible()
|
||||||
await filter.fill("nested")
|
await filter.fill("nested")
|
||||||
const result = panel.getByRole("option", { name: /nested\.ts/ })
|
const result = panel.getByRole("option", { name: /nested\.ts/ })
|
||||||
await expect(result).toBeVisible()
|
await expect(result).toBeVisible()
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ export function SessionFileBrowserTab(props: {
|
|||||||
const resultsID = `session-file-browser-results-${createUniqueId()}`
|
const resultsID = `session-file-browser-results-${createUniqueId()}`
|
||||||
const [filter, setFilter] = createSignal("")
|
const [filter, setFilter] = createSignal("")
|
||||||
const [explicitHighlight, setExplicitHighlight] = createSignal<string>()
|
const [explicitHighlight, setExplicitHighlight] = createSignal<string>()
|
||||||
|
const sidebarOpened = () => props.placeholder || props.state.sidebarOpened()
|
||||||
const query = createMemo(() => filter().trim())
|
const query = createMemo(() => filter().trim())
|
||||||
const search = createQuery(() => {
|
const search = createQuery(() => {
|
||||||
const value = query()
|
const value = query()
|
||||||
@@ -98,15 +99,15 @@ export function SessionFileBrowserTab(props: {
|
|||||||
toolbar
|
toolbar
|
||||||
toolbarStart={
|
toolbarStart={
|
||||||
<>
|
<>
|
||||||
<SessionReviewV2SidebarToggle opened={props.state.sidebarOpened()} onToggle={props.state.toggleSidebar} />
|
<SessionReviewV2SidebarToggle opened={sidebarOpened()} onToggle={props.state.toggleSidebar} />
|
||||||
<Show when={!props.state.sidebarOpened()}>
|
<Show when={!sidebarOpened()}>
|
||||||
<SessionFilePanelV2Title>{title()}</SessionFilePanelV2Title>
|
<SessionFilePanelV2Title>{title()}</SessionFilePanelV2Title>
|
||||||
</Show>
|
</Show>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
sidebar={
|
sidebar={
|
||||||
<SessionReviewV2Sidebar
|
<SessionReviewV2Sidebar
|
||||||
open={props.state.sidebarOpened()}
|
open={sidebarOpened()}
|
||||||
title={<span class="truncate">{title()}</span>}
|
title={<span class="truncate">{title()}</span>}
|
||||||
filter={filter()}
|
filter={filter()}
|
||||||
onFilterChange={setFilter}
|
onFilterChange={setFilter}
|
||||||
|
|||||||
Reference in New Issue
Block a user