1var QuickOrderPanel = (function() { 2 //internal variables and functions 3 var objects = { 4 cartPanel: null, 5 cartBackdrop: null, 6 panelHeader:null, 7 panelContent:null, 8 returnFocusOnCloseElement: null 9 }, 10 11 state = { 12 lastScroll: 0 13 }, 14 15 closePanel = function() { 16 $("body").css("top","").removeClass("is-fixed").addClass("sticky-ignore-next-scroll"); 17 window.scrollTo(0, state.lastScroll); 18 objects.cartBackdrop.detach(); 19 objects.cartPanel.removeClass('open'); 20 21 if (objects.returnFocusOnCloseElement) { 22 objects.returnFocusOnCloseElement.focus(); 23 } 24 }, 25 26 openPanel = function() { 27 if (!objects.cartPanel.hasClass('open')) { 28 // Added to fix scrolling issue 29 state.lastScroll = window.scrollY; 30 $("body").addClass("sticky-ignore-next-scroll"); 31 $("body").css("top","-" + state.lastScroll + "px"); 32 // **************************** 33 objects.returnFocusOnCloseElement = document.activeElement; 34 objects.cartPanel.toggleClass('open'); 35 $("body").addClass("is-fixed"); 36 objects.cartPanel.after(objects.cartBackdrop); 37 } 38 setTimeout(function() {objects.cartPanel.focus()}, 300); 39 }, 40 41 42 43 generateMainPanel = function() { 44 var panelWrap = $('<div class="offcanvas-collapse is-right" id="quickOrderPanel" tabindex="-1"><div class="offcanvas-collapse-inner"></div></div>'); 45 var dynamicCart = $('<div class="dynamic_cart" />'); 46 var panelHeader = $('<div class="dynamic_cart-header"><h3></h3></div>'); 47 var cartContent = $('<div class="dynamic_cart-cart" />'); 48 var closeButton = $('<button type="button" class="icon icon-x dynamic_cart-header-close" title="Close Cart">Close Cart</button>'); 49 var backDrop = $('<div class="offcanvas-backdrop" />'); 50 51 closeButton.on("click", closePanel); 52 53 backDrop.on("click", function() { 54 $("body").removeClass("is-fixed"); 55 $(this).detach(); 56 panelWrap.removeClass('open'); 57 if (objects.returnFocusOnCloseElement) { 58 objects.returnFocusOnCloseElement.focus(); 59 } 60 61 // Added to fix scrolling issue 62 $("body").css("top","").addClass("sticky-ignore-next-scroll"); 63 window.scrollTo(0, state.lastScroll); 64 // **************************** 65 }); 66 67 dynamicCart.append(panelHeader.append(closeButton)).append(cartContent); 68 panelWrap.find('.offcanvas-collapse-inner').append(dynamicCart); 69 70 $('body').append(panelWrap); 71 72 objects.cartPanel = panelWrap; 73 objects.cartBackdrop = backDrop; 74 objects.panelContent = cartContent; 75 objects.panelHeader = panelHeader; 76 }, 77 78 cartInitialize = function() { 79 //console.log("Initialize Cart"); 80 generateMainPanel(); 81 }; 82 83 return { 84 initPanel: function() { 85 cartInitialize(); 86 }, 87 88 open: function() { 89 openPanel(); 90 }, 91 92 close: function() { 93 closePanel(); 94 }, 95 96 getHeader: function() { 97 return objects.panelHeader; 98 }, 99 100 getContent: function() { 101 return objects.panelContent; 102 } 103 }; 104})();
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.