@@ -140,36 +140,40 @@ function initRepoProjectColumnEdit(writableProjectBoard: Element): void {
140140 } ) ;
141141}
142142
143+ function toggleProjectViewFullScreen ( fullscreenElementsSelector : string , isFullScreen : boolean ) : void {
144+ // hide other elements
145+ const headerEl = document . querySelector ( '#navbar' ) ;
146+ const contentEl = document . querySelector ( '.page-content' ) ;
147+ const footerEl = document . querySelector ( '.page-footer' ) ;
148+ toggleElem ( headerEl , isFullScreen ) ;
149+ toggleElem ( contentEl , isFullScreen ) ;
150+ toggleElem ( footerEl , isFullScreen ) ;
151+
152+ const fullScreenEls = document . querySelectorAll ( fullscreenElementsSelector ) ;
153+ const outerEl = document . querySelector ( '.full.height' ) ;
154+ toggleClass ( fullscreenElementsSelector , 'fullscreen' ) ;
155+ if ( isFullScreen ) {
156+ for ( const e of fullScreenEls ) contentEl . append ( e ) ;
157+ } else {
158+ for ( const e of fullScreenEls ) outerEl . append ( e ) ;
159+ }
160+ }
161+
143162function initRepoProjectToggleFullScreen ( ) : void {
144- const el = document . querySelector ( '.toggle-fullscreen' ) ;
145- el . addEventListener ( 'click' , ( ) => {
146- const isFullScreen = el . getAttribute ( 'data-fullscreen' ) === 'true' ;
147-
148- // hide other elements
149- const headerEl = document . querySelector ( '#navbar' ) ;
150- const contentEl = document . querySelector ( '.page-content' ) ;
151- const footerEl = document . querySelector ( '.page-footer' ) ;
152- toggleElem ( headerEl , isFullScreen ) ;
153- toggleElem ( contentEl , isFullScreen ) ;
154- toggleElem ( footerEl , isFullScreen ) ;
155-
156- el . innerHTML = isFullScreen ? 'Fullscreen' : 'Exit' ;
157- el . setAttribute ( 'data-fullscreen' , String ( ! isFullScreen ) ) ;
158- toggleClass ( el , 'is-fullscreen' ) ;
159-
160- const fullScreenEl1 = document . querySelector ( '.projects-view-top' ) ;
161- const fullScreenEl2 = document . querySelector ( '.projects-view-bottom' ) ;
162- const outerEl = document . querySelector ( '.full.height' ) ;
163- toggleClass ( fullScreenEl1 , 'is-fullscreen' ) ;
164- toggleClass ( fullScreenEl2 , 'is-fullscreen' ) ;
165- if ( isFullScreen ) {
166- contentEl . append ( fullScreenEl1 ) ;
167- contentEl . append ( fullScreenEl2 ) ;
168- } else {
169- outerEl . append ( fullScreenEl1 ) ;
170- outerEl . append ( fullScreenEl2 ) ;
171- }
172- } ) ;
163+ const enterFullscreenBtn = document . querySelector ( '.screen-full' ) ;
164+ const exitFullscreenBtn = document . querySelector ( '.screen-normal' ) ;
165+ if ( ! enterFullscreenBtn || ! exitFullscreenBtn ) return ;
166+
167+ const fullscreenElementsSelector = enterFullscreenBtn . getAttribute ( 'data-fullscreen-elements-selector' ) ;
168+
169+ const toggleFullscreenState = ( isExiting : boolean ) => {
170+ toggleProjectViewFullScreen ( fullscreenElementsSelector , isExiting ) ;
171+ toggleElem ( enterFullscreenBtn ) ;
172+ toggleElem ( exitFullscreenBtn ) ;
173+ } ;
174+
175+ enterFullscreenBtn . addEventListener ( 'click' , ( ) => toggleFullscreenState ( false ) ) ;
176+ exitFullscreenBtn . addEventListener ( 'click' , ( ) => toggleFullscreenState ( true ) ) ;
173177}
174178
175179export function initRepoProject ( ) : void {
0 commit comments