{"version":3,"sources":["disclaimers.js"],"names":["modal","focusableElements","firstElement","lastElement","first","event","last","document","activeElement","preventDefault","focus","callDisclaimer","obj","$","addClass","disContent","attr","html","trapFocus","focusTrapped","$opener","ariaLabelFallback","body","on","e","this","removeClass","window","scroll","hasClass","off","once","passive"],"mappings":"YAsEM,SAAMA,aACAC,GAAAA,GAAAA,EAAAA,uBAGAC,EAAeD,EAAAA,KACfE,sGAEGD,EAAWD,EAAgBG,QAC9BC,EAAcJ,EAAOK,MAErBN,GAAIO,GAAAA,UAASC,SAATH,GACII,QAANJ,EAAMI,MACNN,EAAAA,SACDI,SAAAC,gBAAAN,EAAA,KACIG,EAAAI,iBACDF,EAASC,SAGZD,SAAAC,gBAAAL,EAAA,KACFE,EAAAI,iBACFP,EAAAQ,YAON,QAAAC,gBAAAC,GACE,GAAAZ,GAAFa,EAAkBC,+BAChBC,EAAAH,EAAAI,KAA0BC,2BAE5BjB,GAAAA,gBAAAc,SAAA,UACAI,EAAAA,0BAAAA,KAAAA,GACDlB,EAAAgB,KAAA,WAAA,KAFChB,EAAMU,QACNQ,YAtGH,GAAIC,eAAe,EACfC,QAAU,KADVD,kBAAJ,iCAEAN,GAAAN,UAAMc,MAAAA,WAGHR,EAAA,mCAAAG,KAAA,OAAA,KAGAH,EAAE,mCAAmCG,KAAK,OAAQ,UADlDH,EAAE,yCAAwCG,KAA1C,aAAAK,mBAIIR,EAAAN,SAAAe,MAAAC,GAAA,QAAA,sBAAA,SAAAC,GACFA,EAAAf,iBACEF,QAAFM,EAAiBU,MACbd,eAAFI,EAAAY,SAMFZ,EAAE,sBAAsBU,GAAG,QAAS,SAASC,GAD7CX,EAAA,gBAAAa,YAAA,UACEN,QAAAV,UAKFG,EAAAc,QAAAC,OAAA,WAEAf,EAAUe,gBAAOC,SAAW,WAC1BhB,EAAA,gBAAAa,YAAA,cAgCCnB,OAAAA,iBAAF,SAAA,WACEA,EAAAA,UAAFuB,IAAA,WACEjB,EAAAN,SAAAe,MAAAQ,IAAA,SACAjB,EAAA,+BAAFU,GAAA,iBACEI,EAAAA,uBAAFG,IAAA,SACAV,EAAAA,QAAAU,IAAA,UACGC,QAAF,OAAEA,MAAM,EAAMC,SAAS","file":"disclaimers.min.js","sourcesContent":["let focusTrapped = false;\r\nlet $opener = null;\r\nconst ariaLabelFallback = 'View disclaimer, opens a dialog';\r\n\r\n$(document).ready(function() {\r\n var disContent = '';\r\n\r\n $('.disclaimer-callout:not([href])').attr('href', '#');\r\n $('.disclaimer-callout:not([role])').attr('role', 'button');\r\n $('.disclaimer-callout:not([aria-label])').attr('aria-label', ariaLabelFallback);\r\n\r\n // open disc\r\n // add .active class for animation\r\n $(document.body).on('click', '.disclaimer-callout', function(e) {\r\n e.preventDefault();\r\n $opener = $(this);\r\n callDisclaimer($(this));\r\n }); //click END\r\n\r\n // close disc\r\n $('.disclaimers-close').on('click', function(e) {\r\n $('.disclaimers').removeClass('active');\r\n $opener.focus();\r\n }); //click END\r\n\r\n // On scroll\r\n // hide disc\r\n $(window).scroll(function() {\r\n //check id disc is active\r\n if ($('.disclaimers').hasClass('active')) {\r\n $('.disclaimers').removeClass('active');\r\n }\r\n\r\n });\r\n\r\n\r\n }); //document ready\r\n\r\n /**\r\n * Callback for when the disclaimer dialog is finished opening or closing\r\n */\r\n // const onTransitionEnd = () => {\r\n // const $dialog = $('.disclaimers[role=\"dialog\"]');\r\n // if ($dialog.hasClass('active')) {\r\n // $dialog\r\n // .attr('tabindex', '0')\r\n // .focus();\r\n // focusTrapped = true;\r\n // } else {\r\n // if ($opener != null) { \r\n // $opener.focus();\r\n // $opener = null;\r\n // }\r\n // $dialog.removeAttr('tabindex');\r\n // focusTrapped = false;\r\n // }\r\n // };\r\n\r\n // General cleanup on window unload\r\n window.addEventListener('unload', () => {\r\n $(document).off('keydown');\r\n $(document.body).off('click');\r\n $('.disclaimers[role=\"dialog\"]').on('transitionend');\r\n $('.disclaimer-callout').off('click');\r\n $(window).off('scroll');\r\n $opener = null;\r\n }, { once: true, passive: true });\r\n\r\n // Function to trap focus within the modal\r\n function trapFocus() {\r\n const modal = $('.disclaimers.active');\r\n const focusableElements = modal.find(\r\n 'a[href], button, textarea, input[type=\"text\"], input[type=\"radio\"], input[type=\"checkbox\"], select'\r\n );\r\n const firstElement = focusableElements.first();\r\n const lastElement = focusableElements.last();\r\n \r\n modal.on('keydown', function(event) {\r\n if (event.key === 'Tab') {\r\n if (event.shiftKey) {\r\n if (document.activeElement === firstElement[0]) {\r\n event.preventDefault();\r\n lastElement.focus();\r\n }\r\n } else {\r\n if (document.activeElement === lastElement[0]) {\r\n event.preventDefault();\r\n firstElement.focus();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function callDisclaimer(obj) {\r\n const modal = $('.disclaimers[role=\"dialog\"]');\r\n const disContent = obj.attr('data-disclaimers-content');\r\n //console.log('disclaimersContent: ', disContent);\r\n $('.disclaimers').addClass('active');\r\n $('.disclaimers-content p').html(disContent);\r\n modal.attr('tabindex', '0');\r\n modal.focus();\r\n trapFocus();\r\n }"]}