1( function( $ ) { 2 /** 3 * @param $scope The Widget wrapper element as a jQuery element 4 * @param $ The jQuery alias 5 */ 6 var Wcf_Accordion = function ($scope, $) { 7 8 var $wrapper = $scope.find('.elementor-accordion'); 9 var $items = $wrapper.find('.elementor-accordion-item'); 10 11 if($items.length && $wrapper.attr('data-active') === 'yes'){ 12 $items.find('[data-active="yes"]').addClass('elementor-active'); 13 $items.find('.elementor-tab-content[data-active="yes"]').addClass('elementor-active').slideToggle(); 14 } 15 16 $scope.find('.elementor-tab-title').on('click',function(){ 17 $(this).toggleClass("elementor-active").next(".elementor-tab-content").slideToggle().parent().siblings().find(".elementor-tab-content").slideUp().prev().removeClass("elementor-active"); 18 }); 19 20 }; 21 var Wcf_Accordion_2 = function ($scope, $) { 22 23 var $wrapper = $scope.find('.elementor-accordion'); 24 var $items = $wrapper.find('.elementor-accordion-item'); 25 26 if($items.length && $wrapper.attr('data-active') === 'yes'){ 27 $items.find('[data-active="yes"]').addClass('elementor-active'); 28 $items.find('.elementor-tab-content[data-active="yes"]').addClass('elementor-active').slideToggle(); 29 } 30 31 $scope.find('.elementor-tab-title').on('click',function(){ 32 $(this).toggleClass("elementor-active").next(".elementor-tab-content").slideToggle().parent().siblings().find(".elementor-tab-content").slideUp().prev().removeClass("elementor-active"); 33 }); 34 35 }; 36 function wcf_ess_addScript(path,id) { 37 var head = document.getElementsByTagName("head")[0]; 38 var s = document.createElement("script"); 39 s.type = "text/javascript"; 40 s.src = path; 41 s.id = id; 42 head.appendChild(s); 43 } 44 // Make sure you run this code under Elementor. 45 $( window ).on( 'elementor/frontend/init', function() { 46 47 const icon_box = elementorModules.frontend.handlers.Base.extend({ 48 bindEvents : function bindEvents() { 49 this.run(); 50 }, 51 52 run : function(){ 53 54 if(this.getElementSettings('wcf_enable_bottom_top_scroll') === 'yes'){ 55 56 // if (!document.getElementById('gsap-js')) { 57 // wcf_ess_addScript(binox_elglcore_object.gsap,'gsap-js'); //adding script dynamically 58 // } 59 60 // if (!document.getElementById('ScrollTrigger-js')) { 61 // wcf_ess_addScript(binox_elglcore_object.ScrollTrigger,'ScrollTrigger-js'); //adding script dynamically 62 // } 63 64 // if (!document.getElementById('ScrollToPlugin-js')) { 65 // wcf_ess_addScript(binox_elglcore_object.ScrollToPlugin,'ScrollToPlugin-js'); //adding script dynamically 66 // } 67 68 if(this.findElement('a').length){ 69 70 let target = this.findElement('a').attr('href'); 71 if ( !target ){ 72 this.findElement('a').on('click', function(e){ 73 e.preventDefault(); 74 if (typeof(gsap) === "object") { 75 gsap.to(window, {duration: 1, scrollTo:{y:'body', offsetY:70}}); 76 } 77 }); 78 }else{ 79 80 try{ 81 if (typeof(gsap) === "object") { 82 let element = document.querySelector(this.findElement('a').attr('href')); 83 let linkST = ScrollTrigger.create({ 84 trigger: element, 85 start: "top top", 86 }); 87 88 ScrollTrigger.create({ 89 trigger: element, 90 start: "top center", 91 end: "bottom center" 92 }); 93 94 this.findElement('a').on('click', function(e){
95 e.preventDefault(); 96 gsap.to(window, { 97 duration: 0.1, 98 scrollTo: linkST.start, 99 overwrite: "auto" 100 }); 101 }); 102 } 103 104 }catch (e) {} 105 } 106 107 }else{ 108 109 this.findElement('.elementor-widget-container').css({'cursor':'pointer'}); 110 this.findElement('.elementor-widget-container').on('click' , function(e){ 111 e.preventDefault(); 112 if (typeof(gsap) === "object") { 113 gsap.to(window, {duration: 1, scrollTo:{y:'body', offsetY:70}}); 114 } 115 }); 116 } 117 } 118 119 } 120 121 }) 122 123 elementorFrontend.hooks.addAction( 'frontend/element_ready/accordion.skin-wcf-accordion', Wcf_Accordion ); 124 elementorFrontend.hooks.addAction( 'frontend/element_ready/accordion.skin-wcf-accordion-two', Wcf_Accordion_2 ); 125 126 const addIcon_BoxHandler = ( $element ) => { 127 elementorFrontend.elementsHandler.addHandler( icon_box, { 128 $element, 129 } ); 130 }; 131 132 elementorFrontend.hooks.addAction( 'frontend/element_ready/icon-box.default', addIcon_BoxHandler ); 133 elementorFrontend.hooks.addAction( 'frontend/element_ready/wcf--button.default', addIcon_BoxHandler ); 134 elementorFrontend.hooks.addAction( 'frontend/element_ready/button.default', addIcon_BoxHandler ); 135 } ); 136} )( jQuery ); 137 138// Sticky Section 139(function ($) { 140 141 // sticky 142 143 var Wcf_Sticky_Menu = { 144 145 elementorSection: function( $scope ) { 146 var $_target = $scope, 147 instance = null, 148 editMode = Boolean( elementorFrontend.isEditMode() ); 149 instance = new Wcf_Sticky_Menu_Plugin( $_target ); 150 // run main functionality 151 instance.init(instance); 152 153 }, 154 }; 155 156 Wcf_Sticky_Menu_Plugin = function( $target ) { 157 158 var self = this, 159 sectionId = $target.data('id'), 160 settings = false, 161 editMode = Boolean( elementorFrontend.isEditMode() ), 162 $window = $( window ), 163 $body = $( 'body' ); 164 165 /** 166 * Init 167 */ 168 self.init = function() { 169 170 self.wcf_infos_sticky( sectionId ); 171 return false; 172 }; 173 174 175 self.wcf_infos_sticky = function (sectionId){ 176 177 var wcf_global_sticky = false; 178 var wcf_sticky_offset = 150; 179 var wcf_sticky_type = null; 180 181 wcf_global_sticky = self.getSettings( sectionId, 'wcf_global_sticky' ); 182 wcf_sticky_type = self.getSettings( sectionId, 'wcf_sticky_type' ); 183 wcf_sticky_offset = parseInt(self.getSettings( sectionId, 'wcf_sticky_offset' )); 184 185 if(isNaN( wcf_sticky_offset)){ 186 wcf_sticky_offset = 150; 187 } 188 //default offset 189 if(wcf_sticky_offset < 5 ){ 190 wcf_sticky_offset = 110; 191 } 192 193 if(wcf_global_sticky == 'yes'){ 194 195 $target.addClass('wcf-sticky-container'); 196 197 if(wcf_sticky_type == 'top'){ 198 $target.addClass('top'); 199 $target.removeClass('bottom'); 200 } 201 202 if(wcf_sticky_type == 'bottom'){ 203 $target.addClass('bottom'); 204 $target.removeClass('top'); 205 } 206 if(wcf_sticky_type == ''){ 207 $target.removeClass('top'); 208 $target.removeClass('bottom'); 209 } 210 211 $window.on('scroll', function (event) { 212 var scroll = $window.scrollTop(); 213 if (scroll < wcf_sticky_offset) { 214 $target.removeClass("wcf-is-sticky"); 215 } else { 216 $target.addClass("wcf-is-sticky"); 217 } 218 }); 219 }else{ 220 221 $target.removeClass('wcf-sticky-container'); 222 } 223 224 225 }; 226 227 self.getSettings = function(sectionId, key){ 228 var editorElements = null, 229 sectionData = {}; 230 231 232 if ( ! editMode ) { 233 sectionId = 'section' + sectionId; 234 235 if(!window.wcf_section_sticky_data || ! window.wcf_section_sticky_data.hasOwnProperty( sectionId )){ 236 return false; 237 } 238 239 if(! window.wcf_section_sticky_data[ sectionId ].hasOwnProperty( key )){ 240 return false; 241 } 242 243 return window.wcf_section_sticky_data[ sectionId ][key]; 244 }else{ 245 246 if ( ! window.elementor.hasOwnProperty( 'elements' ) ) { 247 return false; 248 } 249 editorElements = window.elementor.elements; 250 251 if ( ! editorElements.models ) { 252 return false; 253 } 254 $.each( editorElements.models, function( index, obj ) { 255 if ( sectionId == obj.id ) { 256 sectionData = obj.attributes.settings.attributes; 257 } 258 }); 259 260 if ( ! sectionData.hasOwnProperty( key ) ) { 261 return false; 262 } 263 } 264 265 return sectionData[ key ]; 266 }; 267 } 268 269 $(window).on('elementor/frontend/init', function () { 270 271 elementorFrontend.hooks.addAction( 'frontend/element_ready/section', Wcf_Sticky_Menu.elementorSection ); 272 elementorFrontend.hooks.addAction( 'frontend/element_ready/container', Wcf_Sticky_Menu.elementorSection ); 273 274 });
275 276 277 278})(jQuery);
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.