1jQuery(document).ready(oxygen_init_offcanvas); 2function oxygen_init_offcanvas($) { 3 4 let touchEvent = 'click'; 5 let previousFocus = false; 6 7 'use strict'; 8 9 $('.oxy-off-canvas .offcanvas-inner').each(function() { 10 11 var offCanvas = $(this), 12 triggerSelector = offCanvas.data('trigger-selector'), 13 offCanvasOutside = offCanvas.data('click-outside'), 14 offCanvasEsc = offCanvas.data('esc'), 15 offCanvasStart = offCanvas.data('start'), 16 offCanvasBackdrop = offCanvas.data('backdrop'), 17 offCanvasFocusSelector = offCanvas.data('focus-selector'), 18 backdrop = offCanvas.prev('.oxy-offcanvas_backdrop'), 19 menuHashLink = offCanvas.find('a[href*=\\#]').not(".menu-item-has-children > a"), 20 reset = offCanvas.data('reset'), 21 mediaPlayer = offCanvas.find('.oxy-pro-media-player vime-player'), 22 otherOffcanvas = offCanvas.data('second-offcanvas'), 23 maybeHashClose = offCanvas.data('hashclose'), 24 offcanvasPush = offCanvas.data('content-push'), 25 offcanvasPushContent = offCanvas.data('content-selector'), 26 offcanvasPushDuration = offCanvas.data('content-duration'), 27 offcanvasID = offCanvas.parent('.oxy-off-canvas').attr('ID'), 28 burgerSync = offCanvas.data('burger-sync'), 29 maybeOverflow = offCanvas.data('overflow'); 30 31 32 if (false !== offCanvas.data('stagger-menu')) { 33 offCanvas.find('.oxy-slide-menu_list > .menu-item').addClass('aos-animate'); 34 offCanvas.find('.oxy-slide-menu_list > .menu-item').attr( { "data-aos": offCanvas.data('stagger-menu') } ); 35 } 36 37 if (! $(this).hasClass('oxy-off-canvas-toggled') ) { 38 $(this).find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 39 } 40 41 ariaExpandToggle('false'); 42 43 if ( true === offCanvas.data('auto-aria') ) { 44 45 $(triggerSelector).each(function(i,trigger) { 46 47 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 48 $(trigger).children('.hamburger').attr('aria-controls', offCanvas.attr('id')); 49 } else { 50 $(trigger).attr('aria-controls', offCanvas.attr('id')); 51 } 52 }); 53 } 54 55 if ( true === offCanvas.data('focus-trap') ) { 56 57 const keyboardfocusableElements = offCanvas.find( 58 'a[href], button, input, textarea, select, details, [tabindex]' 59 ); 60 61 if (keyboardfocusableElements.length) { 62 63 keyboardfocusableElements[keyboardfocusableElements.length - 1].addEventListener('keydown', (e) => { 64 65 if (!e.shiftKey && e.key === 'Tab') { 66 e.preventDefault() 67 keyboardfocusableElements[0].focus() 68 } 69 70 }) 71 72 keyboardfocusableElements[0].addEventListener('keydown', (e) => { 73 74 if (e.shiftKey && e.key === 'Tab') { 75 e.preventDefault() 76 keyboardfocusableElements[keyboardfocusableElements.length - 1].focus() 77 } 78 79 }) 80 81 } 82 } 83 84 function doOffCanvas(triggerSelector) { 85 86 if ($(triggerSelector).hasClass('oxy-close-modal')) { 87 oxyCloseModal(); 88 } 89 90 if (!offCanvas.parent().hasClass('oxy-off-canvas-toggled')) { 91 openOffCanvas(); 92 } else { 93 closeOffCanvas(); 94 } 95 } 96 97 if ( $(triggerSelector).hasClass('oxy-burger-trigger') && $(triggerSelector).children('.hamburger').length ) { 98 99 let triggerSelectorTouch = $( triggerSelector ).children('.hamburger').data('touch'); 100 let touchEvent = 'ontouchstart' in window ? triggerSelectorTouch : 'click'; 101 102 $(triggerSelector).on(touchEvent, function(e) { 103 e.stopPropagation(); 104 e.preventDefault(); 105 106 if (true === burgerSync) { 107 $(triggerSelector).not('#' + $(this).attr('ID')).children('.hamburger').toggleClass('is-active'); 108 } 109 110 if ( !e.target.closest('.oxy-off-canvas') ) { 111 previousFocus = e.target.closest(triggerSelector); 112 } 113 114 doOffCanvas(triggerSelector); 115 116 }); 117 } else { 118 119 let triggerSelectorTouch = touchEvent; 120 $(triggerSelector).on(triggerSelectorTouch, function(e) { 121 e.stopPropagation(); 122 e.preventDefault(); 123 doOffCanvas(triggerSelector); 124 }); 125 } 126 127 128 // Backdrop Clicked 129 offCanvas.siblings('.oxy-offcanvas_backdrop').on(touchEvent, function(e) { 130 e.stopPropagation(); 131 if (offCanvasOutside === true) { 132 closeBurger(); 133 closeLottie(); 134 closeOffCanvas(); 135 } 136 137 }); 138 139 // Pressing ESC from inside the offcanvas will close it 140 offCanvas.keyup(function(e) { 141 if (offCanvasEsc === true) { 142 if (e.keyCode === 27) { 143 closeBurger(); 144 closeLottie(); 145 closeOffCanvas(); 146 } 147 } 148 }); 149 150 if (maybeHashClose === true) { 151 152 $(document).on("click", '#' + offcanvasID + ' a[href*=\\#]', function (e) { 153 154 e.stopPropagation(); 155 156 if ( ( !$(this).not(".menu-item-has-children > a") ) || $(this).is('[href="#"]' ) ) { 157 return; 158 } 159 160 if ( $(this).is(".oxy-table-of-contents_list-item > a") ) { 161 return; 162 } 163 164 if ( $(this).is(".mm-btn") || $(this).is(".mm-navbar__title") ) { 165 return; 166 } 167 168 169 170 if (this.pathname === window.location.pathname) { 171 closeBurger(); 172 closeLottie(); 173 closeOffCanvas(); 174 } 175 }); 176 177 } 178 179 if (offcanvasPush) { 180 $(offcanvasPushContent).attr('data-offcanvas-push', '#' + offcanvasID); 181 $(offcanvasPushContent).css({ 182 "--offcanvas-push" : offcanvasPush + "px", 183 "--offcanvas-push-duration" : offcanvasPushDuration + 's', 184 }); 185 186 } 187 188 function ariaExpandToggle($state) { 189 if ( true === offCanvas.data('auto-aria') ) { 190 $(triggerSelector).each(function(i,trigger) { 191 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 192 $(trigger).children('.hamburger').attr('aria-expanded', $state); 193 } else { 194 $(trigger).attr('aria-expanded', $state); 195 $(trigger).attr('role','button'); 196 } 197 }); 198 } 199 } 200 201 function inertToggle($state) { 202 if ( false !== offCanvas.data('inert') ) { 203 if ('true' === $state) { 204 offCanvas.attr('inert',''); 205 } else { 206 offCanvas.removeAttr('inert'); 207 } 208 } 209 } 210 211 function openOffCanvas() { 212 offCanvas.parent().addClass('oxy-off-canvas-toggled'); 213 $(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 214 $('body,html').addClass('off-canvas-toggled'); 215 $('body,html').addClass('toggled' + offcanvasID); 216 217 if (true === offCanvasStart) { 218 doClose(); 219 } else { 220 doOpen() 221 } 222 223 } 224 225 function closeOffCanvas() { 226 $('body,html').removeClass('off-canvas-toggled'); 227 $('body,html').removeClass('toggled' + offcanvasID); 228 offCanvas.parent().removeClass('oxy-off-canvas-toggled'); 229 $(offcanvasPushContent).removeClass('oxy-off-canvas-toggled'); 230 231 if (true === offCanvasStart) { 232 doOpen() 233 } else { 234 doClose(); 235 } 236 237 } 238 239 function doOpen() { 240 offCanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 241 offCanvas.parent('.oxy-off-canvas').trigger('extras_offcanvas:open'); 242 243 inertToggle('false') 244 setTimeout(function() { 245 offCanvas.attr('aria-hidden','false'); 246 }, 0); 247 248 ariaExpandToggle('true'); 249 250 251 252 if (offCanvasFocusSelector) { 253 setTimeout(function() { 254 offCanvas.parent().find(offCanvasFocusSelector).eq(0).focus(); 255 }, 0); 256 } 257 } 258 259 function doClose() { 260 inertToggle('true'); 261 offCanvas.attr('aria-hidden','true'); 262 263 setTimeout(function(){ 264 offCanvas.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled"); 265 }, reset); // wait before removing the animate class 266 267 $(offCanvas).parent('.oxy-off-canvas').trigger('extras_offcanvas:close'); 268 if (otherOffcanvas) { 269 $(otherOffcanvas).children('.offcanvas-inner').attr('aria-hidden','true'); 270 $(otherOffcanvas).children('.offcanvas-inner').removeAttr('inert'); 271 $(otherOffcanvas).removeClass('oxy-off-canvas-toggled'); 272 } 273 274 ariaExpandToggle('false'); 275 276 mediaPlayer.each(function() { 277 $(this)[0].pause(); // turn off any pro media players 278 }); 279 280 setTimeout(function() { 281 282 if (!!previousFocus) { 283 284 if ( $(previousFocus).find('.hamburger') ) { 285 $(previousFocus).find('.hamburger').focus(); 286 } else { 287 $(previousFocus).focus(); 288 } 289 } 290 291 }, 0); 292 } 293 294 function closeBurger() { 295
296 if ( ( $(triggerSelector).children('.hamburger').length > 0) && ($(this).children('.hamburger').data('animation') !== 'disable')) { 297 $(triggerSelector).children('.hamburger').removeClass('is-active'); 298 } 299 } 300 301 function closeLottie() { 302 303 if ( ( $(triggerSelector).children('lottie-player').length > 0) ) { 304 $(triggerSelector).children('lottie-player').trigger('click'); 305 } 306 } 307 308 /* For programmatically opening */ 309 function extrasOpenOffcanvas($extras_offcanvas) { 310 311 var thisOffcanvas = $($extras_offcanvas); 312 var thisoffcanvasPushContent = thisOffcanvas.children('.offcanvas-inner').data('content-selector'); 313 var thisoffCanvasFocusSelector = thisOffcanvas.children('.offcanvas-inner').data('focus-selector'); 314 315 thisOffcanvas.addClass('oxy-off-canvas-toggled'); 316 $(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 317 offCanvas.attr('aria-hidden','false'); 318 $('body,html').addClass('off-canvas-toggled'); 319 thisOffcanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 320 thisOffcanvas.trigger('extras_offcanvas:open'); 321 322 if (thisoffCanvasFocusSelector) { 323 thisOffcanvas.find(thisoffCanvasFocusSelector).eq(0).focus(); 324 } 325 326 } 327 328 if (true !== offCanvasStart) { 329 offCanvas.attr('aria-hidden','true'); 330 inertToggle('true'); 331 } else { 332 offCanvas.attr('aria-hidden','false'); 333 } 334 335 // Expose function 336 window.extrasOpenOffcanvas = extrasOpenOffcanvas; 337 338 var stagger = offCanvas.data('stagger'); 339 340 // Make sure AOS animations are reset for elements inside after everything has loaded 341 setTimeout(function(){ 342 if (! offCanvas.hasClass('oxy-off-canvas-toggled') ) { 343 offCanvas.find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 344 } 345 }, 40); // wait 346 347 if (stagger != null) { 348 349 var delay = offCanvas.data('first-delay'); 350 offCanvas.find('[data-aos]').not('.not-staggered').each(function() { 351 delay = delay + stagger; 352 353 $(this).attr('data-aos-delay', delay); 354 }); 355 356 } 357 358 }); 359} 360
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.