@@ -129,6 +129,7 @@ import { HtmlPostProcessResult } from "../../../command/render/types.ts";
129129import { isJupyterNotebook } from "../../../core/jupyter/jupyter.ts" ;
130130import { kHtmlEmptyPostProcessResult } from "../../../command/render/constants.ts" ;
131131import { expandAutoSidebarItems } from "./website-sidebar-auto.ts" ;
132+ import { ensureHtmlElements } from "../../../../tests/verify.ts" ;
132133
133134// static navigation (initialized during project preRender)
134135const navigation : Navigation = {
@@ -628,7 +629,7 @@ function handleRepoLinks(
628629 kWebsite ,
629630 config ,
630631 ) ;
631- const forecRepoActions = format . metadata [ kSiteRepoActions ] === true ;
632+ const forceRepoActions = format . metadata [ kSiteRepoActions ] === true ;
632633
633634 const elRepoSource = doc . querySelector (
634635 "[" + kDataQuartoSourceUrl + '="repo"]' ,
@@ -640,8 +641,53 @@ function handleRepoLinks(
640641 if ( repoActions . length > 0 ) {
641642 // find the toc
642643 let repoTarget = doc . querySelector ( `nav[role="doc-toc"]` ) ;
643- if ( repoTarget === null && forecRepoActions ) {
644+ if ( repoTarget === null && forceRepoActions ) {
644645 repoTarget = doc . querySelector ( "#quarto-margin-sidebar" ) ;
646+ } else if ( repoTarget === null ) {
647+ repoTarget = doc . querySelector ( ".nav-footer .nav-footer-center" ) ;
648+ if ( ! repoTarget ) {
649+ const ensureEl = (
650+ doc : Document ,
651+ tagname : string ,
652+ classname : string ,
653+ parent : Element ,
654+ afterEl ?: Element | null ,
655+ ) => {
656+ let el = parent . querySelector ( `${ tagname } .${ classname } ` ) ;
657+ if ( ! el ) {
658+ el = doc . createElement ( tagname ) ;
659+ el . classList . add ( classname ) ;
660+ if ( afterEl !== null && afterEl && afterEl . nextElementSibling ) {
661+ parent . insertBefore ( el , afterEl . nextElementSibling ) ;
662+ } else {
663+ parent . appendChild ( el ) ;
664+ }
665+ }
666+ return el ;
667+ } ;
668+
669+ const footerEl = ensureEl (
670+ doc ,
671+ "footer" ,
672+ "footer" ,
673+ doc . body ,
674+ doc . querySelector ( "div#quarto-content" ) ,
675+ ) ;
676+ const footerContainer = ensureEl (
677+ doc ,
678+ "div" ,
679+ "nav-footer" ,
680+ footerEl ,
681+ ) ;
682+ const footerCenterEl = ensureEl (
683+ doc ,
684+ "div" ,
685+ "nav-footer-center" ,
686+ footerContainer ,
687+ footerContainer . querySelector ( ".nav-footer-left" ) ,
688+ ) ;
689+ repoTarget = footerCenterEl ;
690+ }
645691 }
646692
647693 if ( repoTarget ) {
0 commit comments