1XA.component.tabs && XA.component.tabs.initInstance && (XA.component.tabs.initInstance = (function(func, $) { 2 3 4 var beforeInitScript = function(component, prop) { 5 // code which will be run before initialization of the rendering 6 7 } 8 9 var afterInitScript = function(component) { 10 // script which will be used after the component has been initialized in the original script 11 createMobileTabs(component); 12 13 } 14 15 var createMobileTabs = function(component) { 16 var inner = $(component).find('.tabs-inner'); 17 var header = inner.find('.tabs-heading'); 18 19 var mobileHeader = $('<div>'); 20 mobileHeader.addClass('tabs-mobile-header'); 21 var opener = $('<div>'); 22 opener.addClass('tabs-mobile-header__opener'); 23 opener.appendTo(mobileHeader); 24 var openerContent = $('<span>'); 25 openerContent.addClass('tabs-mobile-header__opener-content'); 26 openerContent.appendTo(opener); 27 var icon = $('<i class="icon-down-open-big"></i>'); 28 icon.appendTo(opener); 29 30 var newHeader = header.clone(); 31 newHeader.appendTo(mobileHeader); 32 mobileHeader.insertBefore(header); 33 newHeader.addClass('closed'); 34 newHeader.slideUp(); 35 36 header.addClass ('tabs-desktop-header'); 37 38 var display = newHeader.find('li.active div.field-heading'); 39 openerContent.html(display.html()); 40 41 header.addClass('desktop-heading'); 42 43 addMobileTabsClickEvents(component, opener, openerContent, newHeader); 44 opener.on('click', function() { 45 var $this = $(this); 46 if (newHeader.hasClass('closed')) { 47 newHeader.removeClass('closed'); 48 newHeader.addClass('open'); 49 $('.tabs-mobile-header__opener-content').addClass('opened'); 50 newHeader.slideDown(); 51 52 } else { 53 newHeader.removeClass('open'); 54 newHeader.addClass('closed'); 55 $('.tabs-mobile-header__opener-content').removeClass('opened'); 56 newHeader.slideUp(); 57 } 58 }) 59 } 60 var isFlipInside = function(instance) { 61 return !!instance.find(".component.flip").length; 62 }; 63 var addMobileTabsClickEvents = function(component, opener, contentSpan, newHeader) { 64 var innerComponent = $(component).find('.tabs-inner'); 65 var $tabNav = innerComponent.find(".tabs-mobile-header .tabs-heading > li"); 66 67 $tabNav 68 .click(function(event) { 69 var current = $(this), 70 index = current.index(), 71 tabInner = current.parents('.tabs-inner'), 72 content = current.find('div.field-heading'); 73 74 contentSpan.html(content.html()); 75 newHeader.removeClass('open'); 76 newHeader.addClass('closed'); 77 78 newHeader.slideUp(); 79 80 current.siblings().removeClass("active"); 81 tabInner 82 .find("> .tabs-container > .tab") 83 .removeClass("active"); 84 current.addClass("active"); 85 $( 86 tabInner 87 .children(".tabs-container") 88 .children(".tab") 89 .eq(index) 90 ).addClass("active"); 91 if (isFlipInside(component)) { 92 try { 93 XA.component.flip.equalSideHeight(component); 94 } catch (e) { 95 /* eslint-disable no-console */ 96 console.warn( 97 "Error during calculation height of Flip list in toggle" 98 ); // jshint ignore:line 99 /* eslint-enable no-console */ 100 } 101 } 102 current.focus(); 103 event.preventDefault(); 104 }) 105 .keyup(function(event) { 106 var currentHeading = $(this); 107 switch (event.keyCode) { 108 case 38: 109 { 110 currentHeading.prev("li").click(); 111 break; 112 } 113 case 40: 114 { 115 currentHeading.next("li").click(); 116 break; 117 } 118 } 119 }); 120 } 121 122 return function(component, prop) { 123 try { 124 var _prop = beforeInitScript(component, prop); 125 } catch (e) { 126 console.log(e) 127 } 128 129 var answer = func.apply(this, [component, _prop]); 130 131 try { 132 afterInitScript(component); 133 } catch (e) { 134 console.log(e) 135 } 136 137 return answer; 138 } 139 140})(XA.component.tabs.initInstance, 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.