From 84fe98bee42ab33340fa712721c0190a621cb9a2 Mon Sep 17 00:00:00 2001 From: nuttylmao Date: Mon, 25 Aug 2025 20:44:19 +1000 Subject: [PATCH] UpdateSettingItemVisibility() now works recursively --- .utilities/settings-page-builder/script.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.utilities/settings-page-builder/script.js b/.utilities/settings-page-builder/script.js index b01a505..38a04df 100644 --- a/.utilities/settings-page-builder/script.js +++ b/.utilities/settings-page-builder/script.js @@ -227,10 +227,23 @@ function LoadJSON(settingsJson) { function UpdateSettingItemVisibility() { data.settings.forEach(setting => { if (setting.showIf) { - if (!document.getElementById(setting.showIf).checked) - document.getElementById(`item-${setting.id}`).style.display = 'none' - else - document.getElementById(`item-${setting.id}`).style.display = 'flex' + const parentElement = document.getElementById(setting.showIf); + let shouldShow = true; + + // Walk up the chain of showIf dependencies + let currentSetting = setting; + while (currentSetting.showIf) { + const parentInput = document.getElementById(currentSetting.showIf); + if (!parentInput || !parentInput.checked) { + shouldShow = false; + break; + } + + // Find the parent setting object (to keep walking up) + currentSetting = data.settings.find(s => s.id === currentSetting.showIf) || {}; + } + + document.getElementById(`item-${setting.id}`).style.display = shouldShow ? 'flex' : 'none'; } }); }