1const profile = (tabs) => { 2 const tabHandler = (e) => { 3 const { target } = e; 4 const controls = target.getAttribute("aria-controls"); 5 const panel = document.getElementById(controls); 6 const panelParent = panel.parentElement; 7 const panelChild = panel.querySelectorAll( 8 '[role="tabpanel"]' 9 ); 10 const panelChildTarget = panel.querySelectorAll( 11 '[role="tab"]' 12 ); 13 const panelChildLabel = panel.getAttribute("aria-labelledby"); 14 const panelParentLabel = panelParent.getAttribute( 15 "aria-labelledby" 16 ); 17 if (panel.getAttribute("aria-hidden") === "true") { 18 target.setAttribute("aria-expanded", "true"); 19 panel.setAttribute("aria-hidden", "false"); 20 panel.style.maxHeight = `${panel.scrollHeight}px`; 21 if (panelChildLabel.includes(panelParentLabel)) { 22 const combineHeight = panel.scrollHeight + panelParent.scrollHeight; 23 panelParent.style.maxHeight = `${combineHeight}px`; 24 } 25 } else { 26 target.setAttribute("aria-expanded", "false"); 27 panel.setAttribute("aria-hidden", "true"); 28 panel.style.maxHeight = "0px"; 29 if (panelChild) { 30 panelChild.forEach((item, index) => { 31 panelChildTarget[index].setAttribute("aria-expanded", "false"); 32 item.setAttribute("aria-hidden", "true"); 33 item.style.maxHeight = "0px"; 34 }); 35 } 36 } 37 };
38 tabs.forEach((tab) => { 39 tab.addEventListener("click", tabHandler); 40 }); 41 const checkAll = document.querySelector(".js-select-all"); 42 if (checkAll) { 43 const otherCheckboxes = document.querySelectorAll( 44 ".js-select" 45 ); 46 const onCheckAllChange = () => { 47 otherCheckboxes.forEach((input) => input.checked = checkAll.checked); 48 }; 49 const onOtherCheckboxChange = () => { 50 const allChecked = Array.from(otherCheckboxes).every( 51 (input) => input.checked 52 ); 53 checkAll.checked = allChecked; 54 }; 55 checkAll.addEventListener("change", onCheckAllChange); 56 otherCheckboxes.forEach( 57 (input) => input.addEventListener("change", onOtherCheckboxChange) 58 ); 59 } 60}; 61export { 62 profile 63};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.