{{template "repo/header" .}} -
+ -
+
{{template "projects/view" .}}
diff --git a/web_src/css/features/projects.css b/web_src/css/features/projects.css index 72ef523913..3b749c46da 100644 --- a/web_src/css/features/projects.css +++ b/web_src/css/features/projects.css @@ -98,3 +98,26 @@ .card-ghost * { opacity: 0; } + +.is-fullscreen.projects-view-top, +.is-fullscreen.projects-view-bottom .ui.container { + position: fixed; + z-index: 1000; + top: 0; + left: 0; + right: 0; + margin: 0 !important; + width: 100%; + max-width: 100%; + background-color: var(--color-body); +} + +.is-fullscreen.projects-view-bottom .ui.container { + top: 36px; +} + +.is-fullscreen #project-board { + position: absolute; + top: 120px; + left: 0; +} diff --git a/web_src/js/features/repo-projects.ts b/web_src/js/features/repo-projects.ts index 11f5c19c8d..e2ec7d1790 100644 --- a/web_src/js/features/repo-projects.ts +++ b/web_src/js/features/repo-projects.ts @@ -1,4 +1,5 @@ import {contrastColor} from '../utils/color.ts'; +import {toggleClass, toggleElem} from '../utils/dom.ts'; import {createSortable} from '../modules/sortable.ts'; import {POST, request} from '../modules/fetch.ts'; import {fomanticQuery} from '../modules/fomantic/base.ts'; @@ -139,7 +140,41 @@ function initRepoProjectColumnEdit(writableProjectBoard: Element): void { }); } +function initRepoProjectToggleFullScreen(): void { + const el = document.querySelector('.toggle-fullscreen'); + el.addEventListener('click', () => { + const isFullScreen = el.getAttribute('data-fullscreen') === 'true'; + + // hide other elements + const headerEl = document.querySelector('#navbar'); + const contentEl = document.querySelector('.page-content'); + const footerEl = document.querySelector('.page-footer'); + toggleElem(headerEl, isFullScreen); + toggleElem(contentEl, isFullScreen); + toggleElem(footerEl, isFullScreen); + + el.innerHTML = isFullScreen ? 'Fullscreen' : 'Exit'; + el.setAttribute('data-fullscreen', String(!isFullScreen)); + toggleClass(el, 'is-fullscreen'); + + const fullScreenEl1 = document.querySelector('.projects-view-top'); + const fullScreenEl2 = document.querySelector('.projects-view-bottom'); + const outerEl = document.querySelector('.full.height'); + toggleClass(fullScreenEl1, 'is-fullscreen'); + toggleClass(fullScreenEl2, 'is-fullscreen'); + if (isFullScreen) { + contentEl.append(fullScreenEl1); + contentEl.append(fullScreenEl2); + } else { + outerEl.append(fullScreenEl1); + outerEl.append(fullScreenEl2); + } + }); +} + export function initRepoProject(): void { + initRepoProjectToggleFullScreen(); + const writableProjectBoard = document.querySelector('#project-board[data-project-borad-writable="true"]'); if (!writableProjectBoard) return;