diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl index a648d7ef45..07141256c7 100644 --- a/templates/repo/home.tmpl +++ b/templates/repo/home.tmpl @@ -24,7 +24,7 @@
{{if $hasTreeSidebar}} -
{{template "repo/view_file_tree_sidebar" .}}
+
{{template "repo/view_file_tree_sidebar" .}}
{{end}}
diff --git a/web_src/css/repo/home.css b/web_src/css/repo/home.css index 7798318dab..7bac53182b 100644 --- a/web_src/css/repo/home.css +++ b/web_src/css/repo/home.css @@ -70,6 +70,8 @@ display: flex; flex-direction: column; gap: 0.25em; + max-height: 100vh; + overflow: hidden; } .repo-grid-tree-sidebar .view-file-tree-sidebar-top { @@ -90,6 +92,11 @@ gap: 0.25em; } +.repo-grid-tree-sidebar .view-file-tree-sidebar-bottom { + flex: 1; + overflow: auto; +} + @media (max-width: 767.98px) { .repo-grid-tree-sidebar { grid-template-columns: auto; diff --git a/web_src/js/features/repo-view-file-tree-sidebar.ts b/web_src/js/features/repo-view-file-tree-sidebar.ts index 8adcc2ab69..e264526517 100644 --- a/web_src/js/features/repo-view-file-tree-sidebar.ts +++ b/web_src/js/features/repo-view-file-tree-sidebar.ts @@ -5,7 +5,7 @@ import ViewFileTree from '../components/ViewFileTree.vue'; import RepoBranchTagSelector from '../components/RepoBranchTagSelector.vue'; import {initGlobalDropdown} from './common-page.ts'; -async function toggleSidebar(visibility) { +async function toggleSidebar(visibility, isSigned) { const sidebarEl = document.querySelector('.repo-view-file-tree-sidebar'); const showBtnEl = document.querySelector('.show-tree-sidebar-button'); const containerClassList = sidebarEl.parentElement.classList; @@ -14,6 +14,8 @@ async function toggleSidebar(visibility) { toggleElem(sidebarEl, visibility); toggleElem(showBtnEl, !visibility); + if (!isSigned) return; + // save to session await PUT('/repo/preferences', { data: { @@ -49,7 +51,7 @@ async function loadContent() { function reloadContentScript() { document.querySelector('.repo-home-filelist .show-tree-sidebar-button').addEventListener('click', () => { - toggleSidebar(true); + toggleSidebar(true, document.querySelector('.repo-view-file-tree-sidebar').hasAttribute('data-is-signed')); }); const refSelectorEl = document.querySelector('.repo-home-filelist .js-branch-tag-selector'); if (refSelectorEl) { @@ -62,11 +64,13 @@ export async function initViewFileTreeSidebar() { const sidebarElement = document.querySelector('.repo-view-file-tree-sidebar'); if (!sidebarElement) return; + const isSigned = sidebarElement.hasAttribute('data-is-signed'); + document.querySelector('.hide-tree-sidebar-button').addEventListener('click', () => { - toggleSidebar(false); + toggleSidebar(false, isSigned); }); document.querySelector('.repo-home-filelist .show-tree-sidebar-button').addEventListener('click', () => { - toggleSidebar(true); + toggleSidebar(true, isSigned); }); const fileTree = document.querySelector('#view-file-tree');