View | Details | Raw Unified | Return to bug 39209
Collapse All | Expand All

(-)a/koha-tmpl/opac-tmpl/bootstrap/js/cookieconsent.js (-3 / +24 lines)
Lines 50-57 Link Here
50
            if (
50
            if (
51
                $(window).scrollTop() >=
51
                $(window).scrollTop() >=
52
                wrapper.offset().top +
52
                wrapper.offset().top +
53
                    wrapper.outerHeight() -
53
                wrapper.outerHeight() -
54
                    window.innerHeight
54
                window.innerHeight
55
            ) {
55
            ) {
56
                consentBar.css("bottom", height);
56
                consentBar.css("bottom", height);
57
            } else {
57
            } else {
Lines 71-82 Link Here
71
        const consentBar = $("#cookieConsentBar");
71
        const consentBar = $("#cookieConsentBar");
72
        consentBar.attr("aria-hidden", "false");
72
        consentBar.attr("aria-hidden", "false");
73
        consentBar.css("display", "flex");
73
        consentBar.css("display", "flex");
74
75
        // Set focus to the first focusable element within the consent bar
76
        const firstFocusableElement = consentBar.find('a, button, input, select, textarea').filter(':visible').first();
77
        if (firstFocusableElement.length) {
78
            firstFocusableElement.focus();
79
        } else {
80
            // If no focusable elements exist, add tabindex to the bar itself to make it focusable
81
            consentBar.attr('tabindex', '-1').focus();
82
        }
74
    }
83
    }
75
84
76
    function hideConsentBar() {
85
    function hideConsentBar() {
77
        const consentBar = $("#cookieConsentBar");
86
        const consentBar = $("#cookieConsentBar");
78
        consentBar.attr("aria-hidden", "true");
87
        consentBar.attr("aria-hidden", "true");
79
        consentBar.hide();
88
        consentBar.hide();
89
90
        // Remove focus from any currently focused element
91
        if (document.activeElement) {
92
            document.activeElement.blur();
93
        }
94
95
        // Set focus to the body, which effectively removes visible focus indicators
96
        // This allows the first Tab press to highlight the "Skip to main content" link
97
        document.body.focus();
98
        document.querySelector('body').setAttribute('tabindex', '-1');
99
        document.querySelector('body').focus();
100
        document.querySelector('body').removeAttribute('tabindex');
80
    }
101
    }
81
102
82
    // Hides the appropriate consent container, depending on what
103
    // Hides the appropriate consent container, depending on what
Lines 226-231 Link Here
226
        $(".consentCheckbox").on("click", function () {
247
        $(".consentCheckbox").on("click", function () {
227
            maintainSelected();
248
            maintainSelected();
228
        });
249
        });
250
229
    }
251
    }
230
252
231
    // On page load, run any code that has been given consent
253
    // On page load, run any code that has been given consent
232
- 

Return to bug 39209