|
var observerAccordionOpen = new MutationObserver(function(mutations) { |
|
mutations.forEach(function(mutationRecord) { |
|
var elem = mutationRecord.target; |
|
var open = elem.classList.contains('open'); |
|
|
|
var accordion = elem.parentNode; |
|
accordion.classList.toggle('input-accordion-open', open); |
|
|
|
var checkbox = gradioApp().querySelector('#' + accordion.id + "-checkbox input"); |
|
checkbox.checked = open; |
|
updateInput(checkbox); |
|
|
|
var extra = gradioApp().querySelector('#' + accordion.id + "-extra"); |
|
if (extra) { |
|
extra.style.display = open ? "" : "none"; |
|
} |
|
}); |
|
}); |
|
|
|
function inputAccordionChecked(id, checked) { |
|
var label = gradioApp().querySelector('#' + id + " .label-wrap"); |
|
if (label.classList.contains('open') != checked) { |
|
label.click(); |
|
} |
|
} |
|
|
|
onUiLoaded(function() { |
|
for (var accordion of gradioApp().querySelectorAll('.input-accordion')) { |
|
var labelWrap = accordion.querySelector('.label-wrap'); |
|
observerAccordionOpen.observe(labelWrap, {attributes: true, attributeFilter: ['class']}); |
|
|
|
var extra = gradioApp().querySelector('#' + accordion.id + "-extra"); |
|
if (extra) { |
|
labelWrap.insertBefore(extra, labelWrap.lastElementChild); |
|
} |
|
} |
|
}); |
|
|