PageSourceSearch

https://om-kv.ch/wp-content/plugins/oxyextras/components/assets/offcanvas-init.js?ver=1.5.4

js om-kv.ch collected 2026-10-02 10:31:00 UTC 14,084 bytes, 371 lines download raw bytes

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

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.