Echo Writes Code

details-element.js

1
2
3
4
5
6
7
8
9
// Close any open <details> elements if we click on anything that _isn't_ a <details> element
// We rely on the name="..." attribute to handle mutual exclusion
document.addEventListener('click', (e) => {
  const detailsElements = Array.from(document.querySelectorAll('details'));

  if (!detailsElements.some(el => el.contains(e.target))) {
    detailsElements.forEach(el => el.removeAttribute('open'));
  }
});