Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3844,6 +3844,8 @@ deleted.display_name = Deleted Project
type-1.display_name = Individual Project
type-2.display_name = Repository Project
type-3.display_name = Organization Project
enter_fullscreen = Fullscreen
exit_fullscreen = Exit Fullscreen

[git.filemode]
changed_filemode = %[1]s → %[2]s
Expand Down
4 changes: 2 additions & 2 deletions templates/org/projects/view.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
{{template "user/overview/header" .}}
</div>
{{end}}
<div class="ui container fluid padded">
{{template "projects/view" .}}
<div class="ui container fluid padded org-projects-view">
{{template "projects/view" dict "." . "FullscreenElementsSelector" ".org-projects-view"}}
</div>
</div>
{{template "base/footer" .}}
8 changes: 8 additions & 0 deletions templates/projects/view.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,14 @@
</div>
{{if $canWriteProject}}
<div class="ui compact mini menu">
<a class="item screen-full" data-fullscreen-elements-selector="{{.FullscreenElementsSelector}}">
{{svg "octicon-screen-full"}}
{{ctx.Locale.Tr "projects.enter_fullscreen"}}
</a>
<a class="item screen-normal tw-hidden">
{{svg "octicon-screen-normal"}}
{{ctx.Locale.Tr "projects.exit_fullscreen"}}
</a>
<a class="item" href="{{.Link}}/edit?redirect=project">
{{svg "octicon-pencil"}}
{{ctx.Locale.Tr "repo.issues.label_edit"}}
Expand Down
4 changes: 2 additions & 2 deletions templates/repo/projects/view.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
<a class="ui small primary button" href="{{.RepoLink}}/issues/new/choose?project={{.Project.ID}}">{{ctx.Locale.Tr "repo.issues.new"}}</a>
</div>
</div>
<div class="ui container fluid padded">
{{template "projects/view" .}}
<div class="ui container fluid padded repo-projects-view">
{{template "projects/view" dict "." . "FullscreenElementsSelector" ".repo-projects-view"}}
</div>
</div>

Expand Down
20 changes: 20 additions & 0 deletions web_src/css/features/projects.css
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,23 @@
.card-ghost * {
opacity: 0;
}

.fullscreen.org-projects-view .ui.container,
.fullscreen.repo-projects-view .ui.container {
position: fixed;
z-index: 1000;
top: 0;
left: 0;
right: 0;
margin: 0 !important;
padding: .25rem;
width: 100%;
max-width: 100%;
background-color: var(--color-body);
}

.fullscreen #project-board {
position: absolute;
top: 75px;
left: 0;
}
39 changes: 39 additions & 0 deletions web_src/js/features/repo-projects.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -139,7 +140,45 @@ function initRepoProjectColumnEdit(writableProjectBoard: Element): void {
});
}

function toggleProjectViewFullScreen(fullscreenElementsSelector: string, isFullScreen: boolean): void {
// 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);

const fullScreenEls = document.querySelectorAll(fullscreenElementsSelector);
const outerEl = document.querySelector('.full.height');
toggleClass(fullscreenElementsSelector, 'fullscreen', isFullScreen);
if (isFullScreen) {
for (const e of fullScreenEls) outerEl.append(e);
} else {
for (const e of fullScreenEls) contentEl.append(e);
}
}

function initRepoProjectToggleFullScreen(): void {
const enterFullscreenBtn = document.querySelector('.screen-full');
const exitFullscreenBtn = document.querySelector('.screen-normal');
if (!enterFullscreenBtn || !exitFullscreenBtn) return;

const fullscreenElementsSelector = enterFullscreenBtn.getAttribute('data-fullscreen-elements-selector');

const toggleFullscreenState = (isFullScreen: boolean) => {
toggleProjectViewFullScreen(fullscreenElementsSelector, isFullScreen);
toggleElem(enterFullscreenBtn);
toggleElem(exitFullscreenBtn);
};

enterFullscreenBtn.addEventListener('click', () => toggleFullscreenState(true));
exitFullscreenBtn.addEventListener('click', () => toggleFullscreenState(false));
}

export function initRepoProject(): void {
initRepoProjectToggleFullScreen();

const writableProjectBoard = document.querySelector('#project-board[data-project-borad-writable="true"]');
if (!writableProjectBoard) return;

Expand Down