From 1db65cf57d580231173c29663ab04f12faed76c8 Mon Sep 17 00:00:00 2001 From: Kerwin Bryant <kerwin612@qq.com> Date: Sat, 29 Mar 2025 11:01:31 +0000 Subject: [PATCH 1/3] Add a toggleClass function in dom.ts --- web_src/js/features/repo-settings.ts | 18 +++++------------- web_src/js/utils/dom.ts | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/web_src/js/features/repo-settings.ts b/web_src/js/features/repo-settings.ts index 80f897069eb1e..27dc4e9bfe81b 100644 --- a/web_src/js/features/repo-settings.ts +++ b/web_src/js/features/repo-settings.ts @@ -1,6 +1,6 @@ import {minimatch} from 'minimatch'; import {createMonaco} from './codeeditor.ts'; -import {onInputDebounce, queryElems, toggleElem} from '../utils/dom.ts'; +import {onInputDebounce, queryElems, toggleClass, toggleElem} from '../utils/dom.ts'; import {POST} from '../modules/fetch.ts'; import {initAvatarUploaderWithCropper} from './comp/Cropper.ts'; import {initRepoSettingsBranchesDrag} from './repo-settings-branches.ts'; @@ -125,22 +125,14 @@ function initRepoSettingsOptions() { const pageContent = document.querySelector('.page-content.repository.settings.options'); if (!pageContent) return; - const toggleClass = (elems: NodeListOf<Element>, className: string, value: boolean) => { - for (const el of elems) el.classList.toggle(className, value); - }; - // Enable or select internal/external wiki system and issue tracker. queryElems<HTMLInputElement>(pageContent, '.enable-system', (el) => el.addEventListener('change', () => { - const elTargets = document.querySelectorAll(el.getAttribute('data-target')); - const elContexts = document.querySelectorAll(el.getAttribute('data-context')); - toggleClass(elTargets, 'disabled', !el.checked); - toggleClass(elContexts, 'disabled', el.checked); + toggleClass(el.getAttribute('data-target'), 'disabled', !el.checked); + toggleClass(el.getAttribute('data-context'), 'disabled', el.checked); })); queryElems<HTMLInputElement>(pageContent, '.enable-system-radio', (el) => el.addEventListener('change', () => { - const elTargets = document.querySelectorAll(el.getAttribute('data-target')); - const elContexts = document.querySelectorAll(el.getAttribute('data-context')); - toggleClass(elTargets, 'disabled', el.value === 'false'); - toggleClass(elContexts, 'disabled', el.value === 'true'); + toggleClass(el.getAttribute('data-target'), 'disabled', el.value === 'false'); + toggleClass(el.getAttribute('data-context'), 'disabled', el.value === 'true'); })); queryElems<HTMLInputElement>(pageContent, '.js-tracker-issue-style', (el) => el.addEventListener('change', () => { diff --git a/web_src/js/utils/dom.ts b/web_src/js/utils/dom.ts index 4d15784e6ed2a..db51b1b349317 100644 --- a/web_src/js/utils/dom.ts +++ b/web_src/js/utils/dom.ts @@ -25,20 +25,26 @@ function elementsCall(el: ElementArg, func: ElementsCallbackWithArgs, ...args: a } } +export function toggleClass(el: ElementArg, className: string, force?: boolean) { + elementsCall(el, (e: Element) => { + if (force === true) { + e.classList.add(className); + } else if (force === false) { + e.classList.remove(className); + } else if (force === undefined) { + e.classList.toggle(className); + } else { + throw new Error('invalid force argument'); + } + }); +} + /** * @param el Element * @param force force=true to show or force=false to hide, undefined to toggle */ function toggleShown(el: Element, force: boolean) { - if (force === true) { - el.classList.remove('tw-hidden'); - } else if (force === false) { - el.classList.add('tw-hidden'); - } else if (force === undefined) { - el.classList.toggle('tw-hidden'); - } else { - throw new Error('invalid force argument'); - } + toggleClass(el, 'tw-hidden', !force); } export function showElem(el: ElementArg) { From 2d9e8acb03c2f7854f83dac63041762f368be445 Mon Sep 17 00:00:00 2001 From: Kerwin Bryant <kerwin612@qq.com> Date: Sat, 29 Mar 2025 13:48:48 +0000 Subject: [PATCH 2/3] fix --- web_src/js/utils/dom.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/web_src/js/utils/dom.ts b/web_src/js/utils/dom.ts index db51b1b349317..c03dd0ae7693e 100644 --- a/web_src/js/utils/dom.ts +++ b/web_src/js/utils/dom.ts @@ -40,23 +40,19 @@ export function toggleClass(el: ElementArg, className: string, force?: boolean) } /** - * @param el Element + * @param el ElementArg * @param force force=true to show or force=false to hide, undefined to toggle */ -function toggleShown(el: Element, force: boolean) { +export function toggleElem(el: ElementArg, force: boolean) { toggleClass(el, 'tw-hidden', !force); } export function showElem(el: ElementArg) { - elementsCall(el, toggleShown, true); + toggleElem(el, true); } export function hideElem(el: ElementArg) { - elementsCall(el, toggleShown, false); -} - -export function toggleElem(el: ElementArg, force?: boolean) { - elementsCall(el, toggleShown, force); + toggleElem(el, false); } export function isElemHidden(el: ElementArg) { From ef2096e123d881f23ce7946adc92a42f96506290 Mon Sep 17 00:00:00 2001 From: Kerwin Bryant <kerwin612@qq.com> Date: Sat, 29 Mar 2025 14:01:23 +0000 Subject: [PATCH 3/3] fix --- web_src/js/utils/dom.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_src/js/utils/dom.ts b/web_src/js/utils/dom.ts index c03dd0ae7693e..6d38ffa8cd2f2 100644 --- a/web_src/js/utils/dom.ts +++ b/web_src/js/utils/dom.ts @@ -43,7 +43,7 @@ export function toggleClass(el: ElementArg, className: string, force?: boolean) * @param el ElementArg * @param force force=true to show or force=false to hide, undefined to toggle */ -export function toggleElem(el: ElementArg, force: boolean) { +export function toggleElem(el: ElementArg, force?: boolean) { toggleClass(el, 'tw-hidden', !force); }