From 4f0152fed93b2b917781a42900f0410b0ef02383 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Sat, 3 Feb 2024 03:51:12 +0000 Subject: [PATCH] Auto open unit accordion (#31) --- .../javascript/active_units.js | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/extensions-builtin/sd_forge_controlnet/javascript/active_units.js b/extensions-builtin/sd_forge_controlnet/javascript/active_units.js index 5c0b2734..13343707 100644 --- a/extensions-builtin/sd_forge_controlnet/javascript/active_units.js +++ b/extensions-builtin/sd_forge_controlnet/javascript/active_units.js @@ -289,8 +289,24 @@ gradioApp().querySelectorAll('#controlnet').forEach(accordion => { if (cnetAllAccordions.has(accordion)) return; - accordion.querySelectorAll('.input-accordion') - .forEach(tab => new ControlNetUnitTab(tab, accordion)); + const tabs = [...accordion.querySelectorAll('.input-accordion')] + .map(tab => new ControlNetUnitTab(tab, accordion)); + + // On open of main extension accordion, if no unit is enabled, + // open unit 0 for edit. + const labelWrap = accordion.querySelector('.label-wrap'); + const observerAccordionOpen = new MutationObserver(function (mutations) { + for (const mutation of mutations) { + if (mutation.target.classList.contains('open') && + tabs.every(tab => !tab.enabledCheckbox.checked && + !tab.tab.querySelector('.label-wrap').classList.contains('open')) + ) { + tabs[0].tab.querySelector('.label-wrap').click(); + } + } + }); + observerAccordionOpen.observe(labelWrap, { attributes: true, attributeFilter: ['class'] }); + cnetAllAccordions.add(accordion); }); });