1 2function UCPostAccordion(objAccordion){ 3 4 var g_activeClass; 5 var g_dataLinkNum, g_accItem, g_scrollOffset; 6 7 //scroll func 8 function scrollToTop(){ 9 var panel = jQuery(this).closest(".uc_ac_box"); 10 11 jQuery('html, body').animate({ 12 scrollTop: panel.offset().top + g_scrollOffset 13 }, 400); 14 } 15 16 /** 17 * on item click 18 */ 19 function onItemClick(objTrigger, isEsc = false){ 20 var objCaption = jQuery(this); 21 22 if(objCaption.hasClass("uc_trigger") == false || !objCaption) 23 objCaption = objTrigger; 24 25 var objContent = objCaption.next(); 26 var objItem = objCaption.parent(); 27 var isActive = objItem.hasClass(g_activeClass); 28 var objOpened = objAccordion.find("."+g_activeClass); 29 var dataCloseothers = objAccordion.data("closeothers"); 30 var objAllTriggerElements = objAccordion.find(".uc_trigger"); 31 32 if(isActive == true){ 33 objItem.removeClass(g_activeClass); 34 objContent.slideUp(); 35 objCaption.attr("aria-expanded", false); 36 37 return(true); 38 } 39 40 if(dataCloseothers == true){ 41 objOpened.removeClass(g_activeClass); 42 objOpened.find(".uc_content").slideUp(); 43 objAllTriggerElements.attr("aria-expanded", false); 44 } 45 46 47 if(isEsc == true){ 48 return(true); 49 } 50 51 objItem.addClass(g_activeClass); 52 objCaption.attr("aria-expanded", true); 53 54 var dataScroll = objAccordion.data('scroll'); 55 56 if (dataScroll == "desktop"){ 57 if(window.matchMedia("(min-width: 1024px)").matches){ 58 objContent.slideDown(scrollToTop); 59 }else{ 60 objContent.slideDown(); 61 } 62 } 63 64 if (dataScroll == "mobile"){ 65 if(window.matchMedia("(max-width: 1024px)").matches){ 66 objContent.slideDown(scrollToTop); 67 }else{ 68 objContent.slideDown(); 69 } 70 } 71 72 if (dataScroll == "desktop+mobile"){ 73 objContent.slideDown(scrollToTop); 74 } 75 76 if (dataScroll == "off" || dataScroll == undefined){ 77 objContent.slideDown(); 78 } 79 80 return false; 81 } 82 83 /** 84 * on keydown 85 */ 86 function onKeyDown(e){ 87 var keyCode = e.keyCode; 88 var objTrigger = jQuery(e.target); 89 90 if(keyCode == 13) 91 onItemClick(objTrigger); 92 93 if(keyCode == 27){ 94 var isEsc = true; 95 96 onItemClick(objTrigger, isEsc); 97 } 98 } 99 100 /** 101 * link to slide scroll 102 */ 103 function linkToSlideScroll(){ 104 jQuery('html, body').animate({ 105 scrollTop: g_accItem.offset().top + g_scrollOffset 106 }, 400); 107 } 108 109 //on trigger link click 110 111 function onLinkClick(e){ 112 var objLink = jQuery(this); 113 var dataAccName = objAccordion.data('name'); 114 var dataLinkName = objLink.data('name'); 115 g_dataLinkNum = objLink.data('num'); 116 g_accItem = objAccordion.find('.uc_ac_box .uc_trigger').eq(g_dataLinkNum - 1); 117 var accItemNumber = objAccordion.find('.uc_ac_box').length; 118 119 if(dataLinkName == undefined || g_dataLinkNum == '' || g_dataLinkNum > accItemNumber){ 120 return(false); 121 } 122 123 var accItemContent = g_accItem.next(); 124 var accItemParent = g_accItem.parent(); 125 126 e.preventDefault(); 127 if(dataLinkName == dataAccName){ 128 if(accItemParent.hasClass("uc-item-active")){ 129 linkToSlideScroll(); 130 }else{ 131 onItemClick(); 132 accItemContent.slideDown(linkToSlideScroll); 133 accItemParent.addClass("uc-item-active"); 134 } 135 }else{ 136 return(false); 137 } 138 } 139 140 /** 141 * init open links 142 */ 143 function initLinks(){ 144 var objLinks = jQuery('.ue-link-goto-item').not(".uc-link-inited"); 145 146 if(objLinks.length == 0){ 147 return(false); 148 } 149 150 var elementName = objAccordion.data("name"); 151 152 jQuery.each(objLinks, function(index, linkElement){ 153 var objLink = jQuery(linkElement); 154 var name = objLink.data("name"); 155 156 if(name != elementName) 157 return(true); 158 159 objLink.addClass("uc-link-inited"); 160 161 objLink.on("click", onLinkClick); 162 }); 163 } 164 165 function runPostAccordion(){ 166 //init globals 167 g_activeClass = "uc-item-active"; 168 g_scrollOffset = objAccordion.data('offset'); 169 170 initLinks(); 171 172 //init events 173 objAccordion.on("click", ".uc_trigger", onItemClick); 174 objAccordion.on("keydown", ".uc_trigger", function(e){onKeyDown(e)}); 175 objAccordion.on("ucclick", ".uc_trigger", onItemClick); 176 } 177 178 runPostAccordion(); 179}
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.