(function() { 'use strict'; /** * Toggle all descendant checkboxes of a target. * * Use `data-target="ID_OF_TARGET"` on the node on which the event is listened * to (checkbox, button, linkā€¦), where_ID_OF_TARGET_ should be the ID of an * ancestor for the checkboxes. * * @example * * @param {Event} event * @return {undefined} */ function toggleAllCheckboxes(event) { const mainCheckbox = event.target; document .querySelectorAll(`#${mainCheckbox.dataset.target} [type="checkbox"]`) .forEach(checkbox => checkbox.checked = mainCheckbox.checked); } document .querySelectorAll('[data-action="toggle-all"]') .forEach(input => { input.addEventListener('change', toggleAllCheckboxes); }); })();