mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Support selecting theme on the footer (#35741)
Fixes: https://github.com/go-gitea/gitea/pull/27576
This commit is contained in:
		@@ -1,14 +1,14 @@
 | 
			
		||||
import {GET} from '../modules/fetch.ts';
 | 
			
		||||
import {GET, POST} from '../modules/fetch.ts';
 | 
			
		||||
import {showGlobalErrorMessage} from '../bootstrap.ts';
 | 
			
		||||
import {fomanticQuery} from '../modules/fomantic/base.ts';
 | 
			
		||||
import {queryElems} from '../utils/dom.ts';
 | 
			
		||||
import {addDelegatedEventListener, queryElems} from '../utils/dom.ts';
 | 
			
		||||
import {registerGlobalInitFunc, registerGlobalSelectorFunc} from '../modules/observer.ts';
 | 
			
		||||
import {initAvatarUploaderWithCropper} from './comp/Cropper.ts';
 | 
			
		||||
import {initCompSearchRepoBox} from './comp/SearchRepoBox.ts';
 | 
			
		||||
 | 
			
		||||
const {appUrl} = window.config;
 | 
			
		||||
const {appUrl, appSubUrl} = window.config;
 | 
			
		||||
 | 
			
		||||
export function initHeadNavbarContentToggle() {
 | 
			
		||||
function initHeadNavbarContentToggle() {
 | 
			
		||||
  const navbar = document.querySelector('#navbar');
 | 
			
		||||
  const btn = document.querySelector('#navbar-expand-toggle');
 | 
			
		||||
  if (!navbar || !btn) return;
 | 
			
		||||
@@ -20,7 +20,7 @@ export function initHeadNavbarContentToggle() {
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function initFootLanguageMenu() {
 | 
			
		||||
function initFooterLanguageMenu() {
 | 
			
		||||
  document.querySelector('.ui.dropdown .menu.language-menu')?.addEventListener('click', async (e) => {
 | 
			
		||||
    const item = (e.target as HTMLElement).closest('.item');
 | 
			
		||||
    if (!item) return;
 | 
			
		||||
@@ -30,6 +30,27 @@ export function initFootLanguageMenu() {
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function initFooterThemeSelector() {
 | 
			
		||||
  const elDropdown = document.querySelector('#footer-theme-selector');
 | 
			
		||||
  if (!elDropdown) return; // some pages don't have footer, for example: 500.tmpl
 | 
			
		||||
  const $dropdown = fomanticQuery(elDropdown);
 | 
			
		||||
  $dropdown.dropdown({
 | 
			
		||||
    direction: 'upward',
 | 
			
		||||
    apiSettings: {url: `${appSubUrl}/-/web-theme/list`, cache: false},
 | 
			
		||||
  });
 | 
			
		||||
  addDelegatedEventListener(elDropdown, 'click', '.menu > .item', async (el) => {
 | 
			
		||||
    const themeName = el.getAttribute('data-value');
 | 
			
		||||
    await POST(`${appSubUrl}/-/web-theme/apply?theme=${encodeURIComponent(themeName)}`);
 | 
			
		||||
    window.location.reload();
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function initCommmPageComponents() {
 | 
			
		||||
  initHeadNavbarContentToggle();
 | 
			
		||||
  initFooterLanguageMenu();
 | 
			
		||||
  initFooterThemeSelector();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function initGlobalDropdown() {
 | 
			
		||||
  // do not init "custom" dropdowns, "custom" dropdowns are managed by their own code.
 | 
			
		||||
  registerGlobalSelectorFunc('.ui.dropdown:not(.custom)', (el) => {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user