PluginProbe
CookieAdmin – Cookie Consent Banner / trunk
CookieAdmin – Cookie Consent Banner vtrunk
1.2.4 1.2.3 1.2.2 1.2.1 1.2.0 1.1.9 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
← All changes | assets/js/consent.js +35 -15 1.2.1 → trunk View file →
@@ -392,9 +392,13 @@
392 392 //Show notice or re-consent icon as needed
393 393 if(!cookieadmin_is_obj(cookieadmin_is_consent) && !cookieadmin_policy.hide_banner){
394 394
395 395 if(cookieadmin_policy.cookieadmin_layout !== "popup"){
396 - document.getElementsByClassName("cookieadmin_law_container")[0].style.display = "block";
396 + var cookieadmin_banner_el = document.getElementsByClassName("cookieadmin_law_container")[0];
397 + if(cookieadmin_banner_el){
398 + cookieadmin_banner_el.style.display = "block";
399 + cookieadmin_banner_el.focus();
400 + }
397 401 }else{
398 402 cookieadmin_toggle_overlay();
399 403 document.getElementsByClassName("cookieadmin_cookie_modal")[0].style.display = "flex";
400 404 }
@@ -494,8 +498,10 @@
494 498 if(cookieadmin_policy.cookieadmin_layout == "popup"){
495 499 document.getElementsByClassName("cookieadmin_close_pref")[0].style.display = "none";
496 500 }
497 501
502 + var cookieadmin_modal_el = document.getElementsByClassName("cookieadmin_cookie_modal")[0];
503 +
498 504 //show preference modal
499 505 cookieadmin_show_modal_elemnts = document.querySelectorAll(".cookieadmin_re_consent, .cookieadmin_customize_btn");
500 506 cookieadmin_show_modal_elemnts.forEach(function(e){
501 507
@@ -528,8 +534,10 @@
528 534 document.getElementsByClassName("cookieadmin_close_pref")[0].id = "cookieadmin_re_consent";
529 535 }else{
530 536 document.getElementsByClassName("cookieadmin_close_pref")[0].id = "cookieadmin_law_container";
531 537 }
538 +
539 + cookieadmin_modal_el.focus();
532 540 });
533 541 });
534 542
535 543 //Save preference
@@ -608,24 +616,36 @@
608 616 cookieadmin_set_consent(prefer2, days);
609 617 });
610 618 });
611 619
612 - document.querySelectorAll(".cookieadmin_show_pref_cookies").forEach(function(e){
613 - e.addEventListener("click", function(el){
614 -
615 - var tgt = el.target.id;
616 - tgt = tgt.replace(/-container$/, "");
617 -
618 - if(el.target.classList.contains("dwn")){
619 - el.target.innerHTML = "►";
620 - el.target.classList.remove("dwn");
621 - document.querySelector("."+tgt).style.display = "none";
620 + document.querySelectorAll(".cookieadmin_show_pref_cookies").forEach(function(btn){
621 +
622 + // Shared toggle function
623 + function toggleAccordion(event){
624 + // Use currentTarget to target the element with the listener, even if child nodes are clicked
625 + var trigger = event.currentTarget;
626 + var tgt = trigger.id.replace(/-container$/, "");
627 + var targetEl = document.querySelector("." + tgt);
628 +
629 + if (!targetEl){
630 + return;
631 + };
632 +
633 + if(trigger.classList.contains("dwn")){
634 + trigger.innerHTML = "►"; // Right arrow
635 + trigger.classList.remove("dwn");
636 + trigger.setAttribute("aria-expanded", "false");
637 + targetEl.style.display = "none";
622 638 }else{
623 - el.target.innerHTML = "▼";
624 - el.target.classList.add("dwn");
625 - document.querySelector("."+tgt).style.display = "block";
639 + trigger.innerHTML = "▼"; // Down arrow
640 + trigger.classList.add("dwn");
641 + trigger.setAttribute("aria-expanded", "true");
642 + targetEl.style.display = "block";
626 643 }
627 - });
644 + }
645 +
646 + // 2. Native buttons fire click on mouse, Enter and Space
647 + btn.addEventListener("click", toggleAccordion);
628 648 });
629 649
630 650 document.getElementsByClassName("cookieadmin_close_pref")[0].addEventListener("click", function(e){
631 651 document.getElementsByClassName("cookieadmin_cookie_modal")[0].style.display = "none";