1"use strict"; 2 3i3.use({ 4 "object": "" 5}); 6 7i3.object.extend({ 8 __name__: "i3-toggle", 9 __constructor__: function (self, params) 10 { 11 params = i3.extend(true, 12 { 13 event: "click", 14 "affect-form": false, 15 16 callbacks: { 17 show: null, 18 hide: null, 19 20 check: function(ev, params) 21 { 22 if (params && params['class']) 23 { 24 if (i3.is(params['class'], 'object')) 25 return !i3(this).is("."+params['class']['in'].split(" ").join(".")); 26 else 27 return !i3(this).is("."+params['class'].split(" ").join(".")); 28 } 29 else 30 { 31 if (i3(self).is("input[type='checkbox'], input[type='radio']")) 32 return i3(self).is(":checked"); 33 else 34 return !i3(this).is(":visible"); 35 } 36 } 37 } 38 }, params); 39 40 params.source = this.__target__(self, params.source, {contained: true, 'default': self}); 41 params.target = this.__target__(self, params.target, i3(self).attr('href')); 42 43 if (params.value) 44 params.callbacks.check = function(ev){ return i3.inArray(i3(ev.target).val(), i3.is(params.value, 'array') ? params.value : [params.value]) !== -1}; 45 46 if (params.label && i3.is(params.label, 'string')) 47 params.label = {"out": i3(self).html(), "in": params.label} 48 49 var component = this; 50 51 i3(params.source.node).on(this.__event__(params.event), function (ev) 52 { 53 component.event.apply(component, [self, ev].concat([].slice.call(arguments).slice(1))); 54 }); 55 56 this.params(params); 57 }, 58 __show__: function() 59 { 60 var component = this; 61 var params = this.params(); 62 63 if (params['source-class']) 64 { 65 if (i3.is(params['source-class'], 'object')) 66 i3(params.source.node).removeClass(params['source-class']['out']).addClass(params['source-class']['in']); 67 else 68 i3(params.source.node).addClass(params['source-class']); 69 } 70 71 if (params['class']) 72 { 73 if (i3.is(params['class'], 'object')) 74 i3(params.target.node).removeClass(params['class']['out']).addClass(params['class']['in']); 75 else 76 i3(params.target.node).addClass(params['class']); 77 } 78 else 79 i3(params.target.node).show(); 80 81 if (params.label) 82 i3(params.source.node).html(params.label['in']); 83 84 if (params['affect-form']) 85 i3(params.target.node).find(":input").removeAttr('disabled'); 86 87 if (i3.is(params.callbacks.show, 'function')) 88 params.callbacks.show.apply(component); 89 90 i3(params.target.node).trigger(this.__event__('show')); 91 }, 92 __hide__: function() 93 { 94 var component = this; 95 var params = this.params(); 96 97 if (params['source-class']) 98 { 99 if (i3.is(params['source-class'], 'object')) 100 i3(params.source.node).removeClass(params['source-class']['in']).addClass(params['source-class']['out']); 101 else 102 i3(params.source.node).removeClass(params['source-class']); 103 } 104 105 if (params['class']) 106 { 107 if (i3.is(params['class'], 'object')) 108 i3(params.target.node).removeClass(params['class']['in']).addClass(params['class']['out']); 109 else 110 i3(params.target.node).removeClass(params['class']); 111 } 112 else 113 i3(params.target.node).hide(); 114 115 if (params.label) 116 i3(params.source.node).html(params.label['out']); 117 118 if (params['affect-form']) 119 i3(params.target.node).find(":input").attr('disabled', 'disabled'); 120 121 if (i3.is(params.callbacks.hide, 'function')) 122 params.callbacks.hide.apply(component); 123 124 i3(params.target.node).trigger(this.__event__('hide')); 125 }, 126 event: function (self, ev) 127 { 128 var component = this; 129 var params = this.params(); 130 131 if (i3(self).is("a")) 132 ev.preventDefault(); 133 134 if (params['class']) 135 { 136 if (params.callbacks.check.apply(params.target.node, [ev, {'class': params['class']}])) 137 this.__show__(); 138 else
139 this.__hide__(); 140 } 141 else 142 { 143 if (params.callbacks.check.apply(params.target.node, [ev])) 144 this.__show__(); 145 else 146 this.__hide__(); 147 } 148 }, 149 __init__: function() 150 { 151 var component = this; 152 var params = this.params(); 153 154 if (i3(params.target.node).is(":hidden")) 155 this.__hide__(); 156 157 i3(params.target.node).off(this.__event__('show')).on(this.__event__('show'), function(event) 158 { 159 // reinitialise slick sliders after zero height hilarities 160 if(i3.fn.slick) 161 i3(this).find(".i3-slider.slick-slider").not(".slick-initialized").slick("reinit"); 162 }); 163 } 164});
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.