From 52f129c8e7e87939abdcec9ad1037997b828f0ad Mon Sep 17 00:00:00 2001 From: Wil Wilsman Date: Wed, 25 Feb 2015 11:10:40 -0500 Subject: [PATCH] Bug fix --- dropkick.js | 10 ++++++---- production/dropkick.min.js | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dropkick.js b/dropkick.js index 4beaf428..c371df82 100644 --- a/dropkick.js +++ b/dropkick.js @@ -21,7 +21,7 @@ var // The Dropkick Object Dropkick = function( sel, opts ) { - var i, l; + var i, dk; // Safety if `Dropkick` is called without `new` if ( this === window ) { @@ -34,9 +34,11 @@ var // Check if select has already been DK'd and return the DK Object for ( i = 0; i < Dropkick.uid; i++) { - if ( Dropkick.cache[ i ].data.select === sel ) { - _.extend( Dropkick.cache[ i ].data.settings, opts ); - return Dropkick.cache[ i ]; + dk = Dropkick.cache[ i ]; + + if ( dk instanceof Dropkick && dk.data.select === sel ) { + _.extend( dk.data.settings, opts ); + return dk; } } diff --git a/production/dropkick.min.js b/production/dropkick.min.js index 0b8724f5..4544b89e 100644 --- a/production/dropkick.min.js +++ b/production/dropkick.min.js @@ -1 +1 @@ -!function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),s}if(Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var s,i,a=t?t:0;if(!this)throw new TypeError;if(i=this.length,0===i||a>=i)return-1;for(0>a&&(a=i-Math.abs(a)),s=a;i>s;s++)if(this[s]===e)return s;return-1}),Array.prototype.forEach||(Array.prototype.forEach=function(e){if(void 0===this||null===this)throw new TypeError;var t=Object(this),s=t.length>>>0;if("function"!=typeof e)throw new TypeError;for(var i=arguments.length>=2?arguments[1]:void 0,a=0;s>a;a++)a in t&&e.call(i,t[a],a,t)}),Event.prototype.preventDefault||(Event.prototype.preventDefault=function(){this.returnValue=!1}),Event.prototype.stopPropagation||(Event.prototype.stopPropagation=function(){this.cancelBubble=!0}),!Element.prototype.addEventListener){var t=[],s=function(e,s){var i=this,a=function(e){e.target=e.srcElement,e.currentTarget=i,s.handleEvent?s.handleEvent(e):s.call(i,e)};if("DOMContentLoaded"==e){var n=function(e){"complete"==document.readyState&&a(e)};if(document.attachEvent("onreadystatechange",n),t.push({object:this,type:e,listener:s,wrapper:n}),"complete"==document.readyState){var o=new Event;o.srcElement=window,n(o)}}else this.attachEvent("on"+e,a),t.push({object:this,type:e,listener:s,wrapper:a})},i=function(e,s){for(var i=0;i-1?s.parentNode.insertBefore(a,s):this.data.elem.lastChild.appendChild(a),a.addEventListener("mouseover",this),n=this.options.indexOf(s),this.options.splice(n,0,a),e.selected&&this.select(n))},item:function(e){return e=0>e?this.options.length+e:e,this.options[e]||null},remove:function(e){var t=this.item(e);t.parentNode.removeChild(t),this.options.splice(e,1),this.data.select.remove(e),this.select(this.data.select.selectedIndex),this.length-=1},init:function(e,s){var o,r=l.build(e,"dk"+l.uid);if(this.data={},this.data.select=e,this.data.elem=r.elem,this.data.settings=h.extend({},d,s),this.disabled=e.disabled,this.form=e.form,this.length=e.length,this.multiple=e.multiple,this.options=r.options.slice(0),this.selectedIndex=e.selectedIndex,this.selectedOptions=r.selected.slice(0),this.value=e.value,this.data.cacheID=l.uid,l.cache[this.data.cacheID]=this,this.data.settings.initialize.call(this),l.uid+=1,this._changeListener||(e.addEventListener("change",this),this._changeListener=!0),!a||this.data.settings.mobile){if(e.parentNode.insertBefore(this.data.elem,e),e.setAttribute("data-dkCacheId",this.data.cacheID),this.data.elem.addEventListener("click",this),this.data.elem.addEventListener("keydown",this),this.data.elem.addEventListener("keypress",this),this.form&&this.form.addEventListener("reset",this),!this.multiple)for(o=0;os,a=r>s,n=i&&!a?"-up":"-down",this.isOpen=!0,h.addClass(d,"dk-select-open"+n),c.setAttribute("aria-expanded","true"),this._scrollTo(this.options.length-1),this._scrollTo(this.selectedIndex),this.data.settings.open.call(this),void 0)}),disable:function(e,t){var i="dk-option-disabled";(0===arguments.length||"boolean"==typeof e)&&(t=e===s?!0:!1,e=this.data.elem,i="dk-select-disabled",this.disabled=t),t===s&&(t=!0),"number"==typeof e&&(e=this.item(e)),h[t?"addClass":"removeClass"](e,i)},select:function(e,t){var s,i,a,n,o=this.data.select;if("number"==typeof e&&(e=this.item(e)),"string"==typeof e)for(s=0;sa&&n>i&&(i=a),i>n&&n>a&&(n=a),this.reset(!0),n>i)for(;n+1>i;)this.select(i++);else for(;i>n-1;)this.select(i--);else t.ctrlKey||t.metaKey?this.select(o):(this.reset(!0),this.select(o))}else this[this.isOpen?"close":"open"](),h.hasClass(o,"dk-option")&&this.select(o)},_highlight:function(e){var t,s=e.target;if(!this.multiple){for(t=0;ta.length-1?n=a.length-1:0>n&&(n=0),this.data.select.options[n].disabled||(this.reset(!0),this.select(n),this._scrollTo(n));break;case o.space:if(!this.isOpen){e.preventDefault(),this.open();break}case o.tab:case o.enter:for(n=0;na.offsetHeight?(t+=e.offsetHeight,a.scrollTop=t-a.offsetHeight):0>s&&(a.scrollTop=t),void 0)}},l.build=function(e,t){var s,i,a,n=[],o={elem:null,options:[],selected:[]},l=function(e){var s,i,a,n,r=[];switch(e.nodeName){case"OPTION":s=h.create("li",{"class":"dk-option ","data-value":e.value,innerHTML:e.text,role:"option","aria-selected":"false",id:t+"-"+(e.id||e.value.replace(" ","-"))}),h.addClass(s,e.className),e.disabled&&(h.addClass(s,"dk-option-disabled"),s.setAttribute("aria-disabled","true")),e.selected&&(h.addClass(s,"dk-option-selected"),s.setAttribute("aria-selected","true"),o.selected.push(s)),o.options.push(this.appendChild(s));break;case"OPTGROUP":for(i=h.create("li",{"class":"dk-optgroup"}),e.label&&i.appendChild(h.create("div",{"class":"dk-optgroup-label",innerHTML:e.label})),a=h.create("ul",{"class":"dk-optgroup-options"}),n=e.children.length;n--;r.unshift(e.children[n]));r.forEach(l,a),this.appendChild(i).appendChild(a)}};for(o.elem=h.create("div",{"class":"dk-select"+(e.multiple?"-multi":"")}),i=h.create("ul",{"class":"dk-select-options",id:t+"-listbox",role:"listbox"}),e.disabled&&h.addClass(o.elem,"dk-select-disabled"),o.elem.id=t+(e.id?"-"+e.id:""),h.addClass(o.elem,e.className),e.multiple?(o.elem.setAttribute("tabindex",e.getAttribute("tabindex")||"0"),i.setAttribute("aria-multiselectable","true")):(s=e.options[e.selectedIndex],o.elem.appendChild(h.create("div",{"class":"dk-selected "+s.className,tabindex:e.tabindex||0,innerHTML:s?s.text:" ",id:t+"-combobox","aria-live":"assertive","aria-owns":i.id,role:"combobox"})),i.setAttribute("aria-expanded","false")),a=e.children.length;a--;n.unshift(e.children[a]));return n.forEach(l,o.elem.appendChild(i)),o},l.onDocClick=function(e){var t,s;if(1!==e.target.nodeType)return isClicked=!1,!1;null!==(t=e.target.getAttribute("data-dkcacheid"))&&l.cache[t].focus();for(s in l.cache)h.closest(e.target,l.cache[s].data.elem)||s===t||l.cache[s].disabled||l.cache[s].close()},e.Dropkick=l,e.jQuery!==s&&(e.jQuery.fn.dropkick=function(){var t=Array.prototype.slice.call(arguments);return e.jQuery(this).each(function(){t[0]&&"object"!=typeof t[0]?"string"==typeof t[0]&&l.prototype[t[0]].apply(new l(this),t.slice(1)):new l(this,t[0]||{})})})}(window,document); \ No newline at end of file +!function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),s}if(Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var s,i,a=t?t:0;if(!this)throw new TypeError;if(i=this.length,0===i||a>=i)return-1;for(0>a&&(a=i-Math.abs(a)),s=a;i>s;s++)if(this[s]===e)return s;return-1}),Array.prototype.forEach||(Array.prototype.forEach=function(e){if(void 0===this||null===this)throw new TypeError;var t=Object(this),s=t.length>>>0;if("function"!=typeof e)throw new TypeError;for(var i=arguments.length>=2?arguments[1]:void 0,a=0;s>a;a++)a in t&&e.call(i,t[a],a,t)}),Event.prototype.preventDefault||(Event.prototype.preventDefault=function(){this.returnValue=!1}),Event.prototype.stopPropagation||(Event.prototype.stopPropagation=function(){this.cancelBubble=!0}),!Element.prototype.addEventListener){var t=[],s=function(e,s){var i=this,a=function(e){e.target=e.srcElement,e.currentTarget=i,s.handleEvent?s.handleEvent(e):s.call(i,e)};if("DOMContentLoaded"==e){var n=function(e){"complete"==document.readyState&&a(e)};if(document.attachEvent("onreadystatechange",n),t.push({object:this,type:e,listener:s,wrapper:n}),"complete"==document.readyState){var o=new Event;o.srcElement=window,n(o)}}else this.attachEvent("on"+e,a),t.push({object:this,type:e,listener:s,wrapper:a})},i=function(e,s){for(var i=0;i-1?s.parentNode.insertBefore(a,s):this.data.elem.lastChild.appendChild(a),a.addEventListener("mouseover",this),n=this.options.indexOf(s),this.options.splice(n,0,a),e.selected&&this.select(n))},item:function(e){return e=0>e?this.options.length+e:e,this.options[e]||null},remove:function(e){var t=this.item(e);t.parentNode.removeChild(t),this.options.splice(e,1),this.data.select.remove(e),this.select(this.data.select.selectedIndex),this.length-=1},init:function(e,s){var o,r=l.build(e,"dk"+l.uid);if(this.data={},this.data.select=e,this.data.elem=r.elem,this.data.settings=h.extend({},d,s),this.disabled=e.disabled,this.form=e.form,this.length=e.length,this.multiple=e.multiple,this.options=r.options.slice(0),this.selectedIndex=e.selectedIndex,this.selectedOptions=r.selected.slice(0),this.value=e.value,this.data.cacheID=l.uid,l.cache[this.data.cacheID]=this,this.data.settings.initialize.call(this),l.uid+=1,this._changeListener||(e.addEventListener("change",this),this._changeListener=!0),!a||this.data.settings.mobile){if(e.parentNode.insertBefore(this.data.elem,e),e.setAttribute("data-dkCacheId",this.data.cacheID),this.data.elem.addEventListener("click",this),this.data.elem.addEventListener("keydown",this),this.data.elem.addEventListener("keypress",this),this.form&&this.form.addEventListener("reset",this),!this.multiple)for(o=0;os,a=r>s,n=i&&!a?"-up":"-down",this.isOpen=!0,h.addClass(d,"dk-select-open"+n),c.setAttribute("aria-expanded","true"),this._scrollTo(this.options.length-1),this._scrollTo(this.selectedIndex),this.data.settings.open.call(this),void 0)}),disable:function(e,t){var i="dk-option-disabled";(0===arguments.length||"boolean"==typeof e)&&(t=e===s?!0:!1,e=this.data.elem,i="dk-select-disabled",this.disabled=t),t===s&&(t=!0),"number"==typeof e&&(e=this.item(e)),h[t?"addClass":"removeClass"](e,i)},select:function(e,t){var s,i,a,n,o=this.data.select;if("number"==typeof e&&(e=this.item(e)),"string"==typeof e)for(s=0;sa&&n>i&&(i=a),i>n&&n>a&&(n=a),this.reset(!0),n>i)for(;n+1>i;)this.select(i++);else for(;i>n-1;)this.select(i--);else t.ctrlKey||t.metaKey?this.select(o):(this.reset(!0),this.select(o))}else this[this.isOpen?"close":"open"](),h.hasClass(o,"dk-option")&&this.select(o)},_highlight:function(e){var t,s=e.target;if(!this.multiple){for(t=0;ta.length-1?n=a.length-1:0>n&&(n=0),this.data.select.options[n].disabled||(this.reset(!0),this.select(n),this._scrollTo(n));break;case o.space:if(!this.isOpen){e.preventDefault(),this.open();break}case o.tab:case o.enter:for(n=0;na.offsetHeight?(t+=e.offsetHeight,a.scrollTop=t-a.offsetHeight):0>s&&(a.scrollTop=t),void 0)}},l.build=function(e,t){var s,i,a,n=[],o={elem:null,options:[],selected:[]},l=function(e){var s,i,a,n,r=[];switch(e.nodeName){case"OPTION":s=h.create("li",{"class":"dk-option ","data-value":e.value,innerHTML:e.text,role:"option","aria-selected":"false",id:t+"-"+(e.id||e.value.replace(" ","-"))}),h.addClass(s,e.className),e.disabled&&(h.addClass(s,"dk-option-disabled"),s.setAttribute("aria-disabled","true")),e.selected&&(h.addClass(s,"dk-option-selected"),s.setAttribute("aria-selected","true"),o.selected.push(s)),o.options.push(this.appendChild(s));break;case"OPTGROUP":for(i=h.create("li",{"class":"dk-optgroup"}),e.label&&i.appendChild(h.create("div",{"class":"dk-optgroup-label",innerHTML:e.label})),a=h.create("ul",{"class":"dk-optgroup-options"}),n=e.children.length;n--;r.unshift(e.children[n]));r.forEach(l,a),this.appendChild(i).appendChild(a)}};for(o.elem=h.create("div",{"class":"dk-select"+(e.multiple?"-multi":"")}),i=h.create("ul",{"class":"dk-select-options",id:t+"-listbox",role:"listbox"}),e.disabled&&h.addClass(o.elem,"dk-select-disabled"),o.elem.id=t+(e.id?"-"+e.id:""),h.addClass(o.elem,e.className),e.multiple?(o.elem.setAttribute("tabindex",e.getAttribute("tabindex")||"0"),i.setAttribute("aria-multiselectable","true")):(s=e.options[e.selectedIndex],o.elem.appendChild(h.create("div",{"class":"dk-selected "+s.className,tabindex:e.tabindex||0,innerHTML:s?s.text:" ",id:t+"-combobox","aria-live":"assertive","aria-owns":i.id,role:"combobox"})),i.setAttribute("aria-expanded","false")),a=e.children.length;a--;n.unshift(e.children[a]));return n.forEach(l,o.elem.appendChild(i)),o},l.onDocClick=function(e){var t,s;if(1!==e.target.nodeType)return isClicked=!1,!1;null!==(t=e.target.getAttribute("data-dkcacheid"))&&l.cache[t].focus();for(s in l.cache)h.closest(e.target,l.cache[s].data.elem)||s===t||l.cache[s].disabled||l.cache[s].close()},e.Dropkick=l,e.jQuery!==s&&(e.jQuery.fn.dropkick=function(){var t=Array.prototype.slice.call(arguments);return e.jQuery(this).each(function(){t[0]&&"object"!=typeof t[0]?"string"==typeof t[0]&&l.prototype[t[0]].apply(new l(this),t.slice(1)):new l(this,t[0]||{})})})}(window,document); \ No newline at end of file