From 9a440db9d269818c6e65a20bb509344cc03b2806 Mon Sep 17 00:00:00 2001 From: Kostenko Nikita <244571@niuitmo.ru> Date: Mon, 31 Aug 2026 15:42:20 +0300 Subject: [PATCH 01/11] feat(frontend): unify navigation sidebar scrolling --- .../features/api-docs/ApiDocsSidebar.svelte | 21 +- .../channels/ChannelNavigation.svelte | 37 ++- .../src/lib/features/channels/Channels.svelte | 6 +- .../collections/CollectionNavigation.svelte | 164 ++++++------ .../collections/CollectionsList.svelte | 4 +- .../collections/CollectionsNavigation.svelte | 30 +-- .../iterations/IterationNavigation.svelte | 9 +- .../lib/features/iterations/Iterations.svelte | 4 +- .../features/logbook/BucketNavigation.svelte | 41 ++- .../src/lib/features/logbook/Logbook.svelte | 4 +- .../milestones/MilestoneNavigation.svelte | 37 ++- .../lib/features/milestones/Milestones.svelte | 4 +- .../lib/features/pages/PagesNavSidebar.svelte | 23 +- frontend/src/lib/features/time/Time.svelte | 51 ++-- .../src/lib/layout/NavigationSidebar.svelte | 34 +++ .../src/lib/layout/ScrollableSidebar.svelte | 94 +++++++ frontend/src/lib/pages/Admin.svelte | 124 ++++----- frontend/src/lib/pages/ApiDocs.svelte | 2 +- .../src/lib/pages/MainRouteContent.svelte | 29 +-- .../CustomerOrganisationNavigation.svelte | 53 ++-- frontend/src/lib/workspaces/Customers.svelte | 6 +- .../lib/workspaces/WorkspaceAdminNav.svelte | 2 +- .../lib/workspaces/WorkspaceNavigation.svelte | 243 ++++++++++-------- 23 files changed, 604 insertions(+), 418 deletions(-) create mode 100644 frontend/src/lib/layout/NavigationSidebar.svelte create mode 100644 frontend/src/lib/layout/ScrollableSidebar.svelte diff --git a/frontend/src/lib/features/api-docs/ApiDocsSidebar.svelte b/frontend/src/lib/features/api-docs/ApiDocsSidebar.svelte index a0f801ad5..039be645c 100644 --- a/frontend/src/lib/features/api-docs/ApiDocsSidebar.svelte +++ b/frontend/src/lib/features/api-docs/ApiDocsSidebar.svelte @@ -2,6 +2,7 @@ import MethodBadge from './MethodBadge.svelte'; import Input from '../../components/Input.svelte'; import { filterGroups } from './openapi-store.svelte.js'; + import ScrollableSidebar from '../../layout/ScrollableSidebar.svelte'; let { groups, @@ -21,7 +22,7 @@ } - + diff --git a/frontend/src/lib/pages/Admin.svelte b/frontend/src/lib/pages/Admin.svelte index cd02e5382..65ab7289b 100644 --- a/frontend/src/lib/pages/Admin.svelte +++ b/frontend/src/lib/pages/Admin.svelte @@ -46,6 +46,7 @@ import PluginModalContainer from '../layout/PluginModalContainer.svelte'; import LinkComponent from '../components/Link.svelte'; import SidebarHeader from '../layout/SidebarHeader.svelte'; + import ScrollableSidebar from '../layout/ScrollableSidebar.svelte'; import { IconFileText, IconMenu2, IconPuzzle, IconSearch, IconX } from '@tabler/icons-svelte-runes'; import { useEventListener } from 'runed'; import PermissionGuard from '../layout/PermissionGuard.svelte'; @@ -298,8 +299,58 @@ } +{#snippet adminSidebarHeader()} +
+
+
+ +
+ +
+ + +
+ +
+
+
+
+{/snippet} + -
+
@@ -313,63 +364,19 @@ onclick={() => closeAdminNavigation(true)} > {/if} - + {/if} @@ -623,7 +629,7 @@ {/if} - {#each allAdminItems.filter(item => item.isPlugin) as pluginItem} + {#each allAdminItems.filter(item => item.isPlugin) as pluginItem (pluginItem.id)} {#if activeTab === pluginItem.id} {@const pluginName = pluginItem.pluginData?.pluginName || 'unknown'} {@const iframeSrc = `/api/plugins/${pluginName}/assets/${pluginItem.pluginData?.component || 'index.html'}`} @@ -659,7 +665,7 @@ } @media (max-width: 1100px) { - .admin-sidebar { + :global(.admin-sidebar) { position: absolute; z-index: 30; inset: 0 auto 0 0; @@ -673,7 +679,7 @@ box-shadow: var(--ds-shadow-overlay, 0 8px 24px rgb(9 30 66 / 25%)); } - .admin-sidebar.admin-navigation-open { + :global(.admin-sidebar.admin-navigation-open) { visibility: visible; transform: translateX(0); } @@ -761,7 +767,7 @@ } @media (prefers-reduced-motion: reduce) { - .admin-sidebar { + :global(.admin-sidebar) { transition: none; } } diff --git a/frontend/src/lib/pages/ApiDocs.svelte b/frontend/src/lib/pages/ApiDocs.svelte index 28202f2ea..7137580f5 100644 --- a/frontend/src/lib/pages/ApiDocs.svelte +++ b/frontend/src/lib/pages/ApiDocs.svelte @@ -71,7 +71,7 @@