diff --git a/bookmarks/e2e/e2e_test_collapse_side_panel.py b/bookmarks/e2e/e2e_test_collapse_side_panel.py new file mode 100644 index 0000000..407b4f7 --- /dev/null +++ b/bookmarks/e2e/e2e_test_collapse_side_panel.py @@ -0,0 +1,48 @@ +from django.urls import reverse +from playwright.sync_api import sync_playwright, expect + +from bookmarks.e2e.helpers import LinkdingE2ETestCase + + +class CollapseSidePanelE2ETestCase(LinkdingE2ETestCase): + + def setUp(self) -> None: + super().setUp() + + def assertSidePanelIsVisible(self): + expect(self.page.locator(".bookmarks-page .side-panel")).to_be_visible() + expect( + self.page.locator(".bookmarks-page [ld-tag-modal-trigger]") + ).not_to_be_visible() + + def assertSidePanelIsHidden(self): + expect(self.page.locator(".bookmarks-page .side-panel")).not_to_be_visible() + expect( + self.page.locator(".bookmarks-page [ld-tag-modal-trigger]") + ).to_be_visible() + + def test_side_panel_should_be_visible_by_default(self): + with sync_playwright() as p: + self.open(reverse("bookmarks:index"), p) + self.assertSidePanelIsVisible() + + self.page.goto(self.live_server_url + reverse("bookmarks:archived")) + self.assertSidePanelIsVisible() + + self.page.goto(self.live_server_url + reverse("bookmarks:shared")) + self.assertSidePanelIsVisible() + + def test_side_panel_should_be_hidden_when_collapsed(self): + user = self.get_or_create_test_user() + user.profile.collapse_side_panel = True + user.profile.save() + + with sync_playwright() as p: + self.open(reverse("bookmarks:index"), p) + self.assertSidePanelIsHidden() + + self.page.goto(self.live_server_url + reverse("bookmarks:archived")) + self.assertSidePanelIsHidden() + + self.page.goto(self.live_server_url + reverse("bookmarks:shared")) + self.assertSidePanelIsHidden() diff --git a/bookmarks/migrations/0043_userprofile_collapse_side_panel.py b/bookmarks/migrations/0043_userprofile_collapse_side_panel.py new file mode 100644 index 0000000..4a0405f --- /dev/null +++ b/bookmarks/migrations/0043_userprofile_collapse_side_panel.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.5 on 2025-02-02 09:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookmarks", "0042_userprofile_custom_css_hash"), + ] + + operations = [ + migrations.AddField( + model_name="userprofile", + name="collapse_side_panel", + field=models.BooleanField(default=False), + ), + ] diff --git a/bookmarks/models.py b/bookmarks/models.py index fe4530b..38d8c30 100644 --- a/bookmarks/models.py +++ b/bookmarks/models.py @@ -440,6 +440,7 @@ class UserProfile(models.Model): null=False, default=30, validators=[MinValueValidator(10)] ) sticky_pagination = models.BooleanField(default=False, null=False) + collapse_side_panel = models.BooleanField(default=False, null=False) def save(self, *args, **kwargs): if self.custom_css: @@ -479,6 +480,7 @@ class UserProfileForm(forms.ModelForm): "auto_tagging_rules", "items_per_page", "sticky_pagination", + "collapse_side_panel", ] diff --git a/bookmarks/styles/bookmark-details.css b/bookmarks/styles/bookmark-details.css index ba860fb..5aa0215 100644 --- a/bookmarks/styles/bookmark-details.css +++ b/bookmarks/styles/bookmark-details.css @@ -36,7 +36,6 @@ } } - & .sections section { margin-top: var(--unit-4); } diff --git a/bookmarks/styles/bookmark-page.css b/bookmarks/styles/bookmark-page.css index dcefd83..45f81e3 100644 --- a/bookmarks/styles/bookmark-page.css +++ b/bookmarks/styles/bookmark-page.css @@ -10,8 +10,38 @@ } /* Bookmark page grid */ -.bookmarks-page.grid { - grid-gap: var(--unit-9); +.bookmarks-page { + &.grid { + grid-gap: var(--unit-9); + } + + [ld-tag-modal-trigger] { + display: none; + } + + @media (max-width: 840px) { + section.side-panel { + display: none; + } + + [ld-tag-modal-trigger] { + display: inline-block; + } + } + + &.collapse-side-panel { + section.main { + grid-column: span var(--grid-columns); + } + + section.side-panel { + display: none; + } + + [ld-tag-modal-trigger] { + display: inline-block; + } + } } /* Bookmark area header controls */ diff --git a/bookmarks/templates/bookmarks/archive.html b/bookmarks/templates/bookmarks/archive.html index e3ab325..4ae8dee 100644 --- a/bookmarks/templates/bookmarks/archive.html +++ b/bookmarks/templates/bookmarks/archive.html @@ -4,16 +4,17 @@ {% load bookmarks %} {% block content %} -