diff --git a/integ_tests/test_scenes.py b/integ_tests/test_scenes.py
index 1fd30061..68d1cefd 100644
--- a/integ_tests/test_scenes.py
+++ b/integ_tests/test_scenes.py
@@ -126,3 +126,24 @@ def test_navigation_refresh_button(
page.click('#logoutview a[data-name="refresh"]')
# It shows LoadingScene briefly then back to CollectionsScene
expect(page.locator("#collectionsscene")).to_be_visible()
+
+
+def test_navigation_browser_history(
+ context: BrowserContext, page: Page, radicale_server: str, config: Config
+) -> None:
+ login(page, radicale_server, config, context=context)
+ expect(page.locator("#collectionsscene")).to_be_visible()
+
+ # Navigate forward inside the SPA to CreateEditCollectionScene
+ page.click('a[data-name="new"]')
+ expect(page.locator("#createcollectionscene")).to_be_visible()
+
+ # Emulate browser Back button
+ page.go_back()
+ expect(page.locator("#createcollectionscene")).to_be_hidden()
+ expect(page.locator("#collectionsscene")).to_be_visible()
+
+ # Emulate browser Forward button
+ page.go_forward()
+ expect(page.locator("#collectionsscene")).to_be_hidden()
+ expect(page.locator("#createcollectionscene")).to_be_visible()
diff --git a/radicale/web/internal_data/css/main.css b/radicale/web/internal_data/css/main.css
index b06e2241..acb75fd6 100644
--- a/radicale/web/internal_data/css/main.css
+++ b/radicale/web/internal_data/css/main.css
@@ -191,7 +191,7 @@ main {
#collectionsscene article p {
font-size: 1em;
max-height: 130px;
- overflow: overlay;
+ overflow: auto;
word-wrap: break-word;
}
@@ -476,7 +476,8 @@ a.blue:active {
}
button.inline {
- padding-inline: 1px;
+ padding-left: 1px;
+ padding-right: 1px;
min-width: 2em;
margin: 0;
}
diff --git a/radicale/web/internal_data/index.html b/radicale/web/internal_data/index.html
index 278632c9..d7d6c4ef 100644
--- a/radicale/web/internal_data/index.html
+++ b/radicale/web/internal_data/index.html
@@ -127,13 +127,13 @@
-
+
-
+
-
+
-
+
@@ -309,15 +309,15 @@
-
+
-
+
-
+
-
+
-
+
@@ -342,9 +342,9 @@