Skip to content

Commit 4b17224

Browse files
feat: support relative paths in FileBrowser
1 parent c96dd3b commit 4b17224

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

solara/components/file_browser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def on_item(item, double_click):
114114
on_path_select(None)
115115
return
116116
if item["name"] == "..":
117-
new_dir = current_dir.value.parent
117+
new_dir = current_dir.value.resolve().parent
118118
action_change_directory = (can_select and double_click) or (not can_select and not double_click)
119119
if action_change_directory and change_dir(new_dir):
120120
if scroll_pos_stack:
@@ -164,7 +164,7 @@ def on_double_click(item):
164164

165165
files = [{"name": "..", "is_file": False}] + list_dir(current_dir.value, filter=filter, directory_first=directory_first)
166166
with Div(class_="solara-file-browser") as main:
167-
Div(children=[str(current_dir.value)])
167+
Div(children=[str(current_dir.value.resolve())])
168168
FileListWidget.element(
169169
files=files,
170170
selected=selected,

tests/unit/file_browser_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,16 @@ def set_directory(path: Path) -> None:
220220
names = {k["name"] for k in items}
221221
assert names != {"unit", "ui", "docs", "integration", "pyinstaller", ".."}
222222
assert mock.call_count == 1
223+
224+
225+
def test_file_browser_relative_path():
226+
@solara.component
227+
def Test():
228+
return solara.FileBrowser(".")
229+
230+
div, rc = solara.render_fixed(Test())
231+
list: solara.components.file_browser.FileListWidget = div.children[1]
232+
files = {k["name"] for k in list.files}
233+
list.test_click("..")
234+
files_parent = {k["name"] for k in list.files}
235+
assert files_parent != files

0 commit comments

Comments
 (0)