+
-
+
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;
{{template "projects/view" .}}