diff --git a/selectable.js b/selectable.js index 68af363..00cc163 100644 --- a/selectable.js +++ b/selectable.js @@ -409,9 +409,11 @@ } classList.add(this.container, o.classes.container); + this.container._selectable = this; if (old) { classList.remove(old, o.classes.container); + delete old._selectable } this.bodyContainer = this.container === document.body; @@ -977,7 +979,7 @@ count = this.getSelectedItems().length, max = o.maxSelectable; - // max items reached and toggle is enabled or the cmd / shift key is down + // max items reached if (!!max && count >= max && (cmd || shift)) { return this._maxReached(); } diff --git a/selectable.min.js b/selectable.min.js index bbe7f08..3cd8c88 100644 --- a/selectable.min.js +++ b/selectable.min.js @@ -19,17 +19,17 @@ Version: 0.17.7 a._end),this.on(document,"touchcancel",a._end),!1!==this.lasso)this.on(document,"touchmove",a._drag)}else if(this.on(this.container,"mousedown",a._start),this.on(document,"mouseup",a._end),this.on(document,"keydown",a._keydown),this.on(document,"keyup",a._keyup),this.on(this.container,"mouseenter",a._focus),this.on(this.container,"mouseover",a._focus),this.on(this.container,"mouseleave",a._blur),!1!==this.lasso)this.on(document,"mousemove",a._drag);if(this.autoscroll)this.on(this.bodyContainer?window: this.container,"scroll",a._scroll);this.on(window,"resize",a._refresh);this.on(window,"scroll",a._refresh)},unbind:function(){var a=this.events;this.off(this.container,"mousedown",a._start);this.off(document,"mousemove",a._drag);this.off(document,"mouseup",a._end);this.off(document,"keydown",a._keydown);this.off(document,"keyup",a._keyup);this.off(this.container,"mouseenter",a._focus);this.off(this.container,"mouseleave",a._blur);this.autoscroll&&this.off(this.bodyContainer?window:this.container, "scroll",a._scroll);this.off(this.container,"touchstart",a._start);this.off(document,"touchend",a._end);this.off(document,"touchcancel",a._end);this.off(document,"touchmove",a._drag);this.off(window,"resize",a._refresh);this.off(window,"scroll",a._refresh)},setContainer:function(a){var c=this.config;if(this.container){var b=this.container;this.unbind()}a=a||c.appendTo;"string"===typeof a?this.container=document.querySelector(a):a instanceof Element&&a.nodeName&&(this.container=a);g.add(this.container, - c.classes.container);b&&g.remove(b,c.classes.container);this.bodyContainer=this.container===document.body;this._loadItems();this.autoscroll&&"static"===E(this.container).position&&!this.bodyContainer&&(this.container.style.position="relative");this.bind()},select:function(a,c,b){c=1=this.config.maxSelectable);e++)this.select(a[e], - !1,!1),d++;b&&this.config.saveState&&this.state("save");return this.getSelectedItems()}if(a=this.get(a)){if(this.config.toggle&&"drag"===this.config.toggle&&!c&&a.selected&&!this.cmdDown)return this.deselect(a,!1);d=a.node;e=this.config.classes;g.remove(d,e.selecting);g.add(d,e.selected);a.selecting=!1;a.selected=!0;a.startselected=!0;b&&this.config.saveState&&this.state("save");this.emit(15>this.v[1]?"selectable.select":"selecteditem",a);return a}return!1},deselect:function(a,c){if(x(a)){for(var b= - 0;bthis.v[1]?"selectable.deselect":"deselecteditem",a);return a}return!1},toggle:function(a){if(a=this.get(a)){x(a)||(a=[a]);for(var c=0;c< - a.length;c++)a[c].selected?this.deselect(a[c],!1):this.select(a[c],!1,!1);this.config.saveState&&this.state("save")}},add:function(a){var c=[];"string"===typeof a&&(a=[].slice.call(this.container.querySelectorAll(a)));x(a)||(a=[a]);for(var b=0;bthis.nodes.indexOf(a[b])&&a[b]instanceof Element&&(c.push(a[b]),g.add(a[b],this.config.classes.selectable));this.nodes=this.nodes.concat(c);this.update();for(b=0;bthis.config.saveState&&this.states.shift();this.currentState=this.states.length-1;b=!0;break;case "undo":0this.v[1]?"selectable.state.":"state.")+a,this.states[this.currentState],this.states)},enable:function(){if(!this.enabled){var a=this.config.keys;this.enabled=!0;this.canShift=0<=a.indexOf("shiftKey");this.canCtrl=0<=a.indexOf("ctrlKey");this.canMeta=0<=a.indexOf("metaKey");this.bind();g.add(this.container, - this.config.classes.container);this.emit(15>this.v[1]?"selectable.enable":"enabled")}return this.enabled},disable:function(){this.enabled&&(this.enabled=!1,this.unbind(),g.remove(this.container,this.config.classes.container),this.emit(15>this.v[1]?"selectable.disable":"disabled"));return this.enabled},destroy:function(){this.disable();this.listeners=!1;this.clear();this.state("clear");this.remove(this.items);this.events=null},on:function(a,c,b){"string"===typeof a?(this.listeners=this.listeners|| - {},this.listeners[a]=this.listeners[a]||[],this.listeners[a].push(c)):a.addEventListener(c,b,!1)},off:function(a,c,b){"string"===typeof a?(this.listeners=this.listeners||{},!1!==a in this.listeners&&this.listeners[a].splice(this.listeners[a].indexOf(c),1)):a.removeEventListener(c,b)},emit:function(a){this.listeners=this.listeners||{};if(!1!==a in this.listeners)for(var c=0;c=this.config.maxSelectable);e++)this.select(a[e],!1,!1),d++;b&&this.config.saveState&&this.state("save");return this.getSelectedItems()}if(a=this.get(a)){if(this.config.toggle&&"drag"===this.config.toggle&&!c&&a.selected&&!this.cmdDown)return this.deselect(a,!1);d=a.node;e=this.config.classes;g.remove(d,e.selecting);g.add(d,e.selected);a.selecting=!1;a.selected=!0;a.startselected=!0;b&&this.config.saveState&&this.state("save");this.emit(15>this.v[1]? + "selectable.select":"selecteditem",a);return a}return!1},deselect:function(a,c){if(x(a)){for(var b=0;bthis.v[1]?"selectable.deselect":"deselecteditem", + a);return a}return!1},toggle:function(a){if(a=this.get(a)){x(a)||(a=[a]);for(var c=0;cthis.nodes.indexOf(a[b])&&a[b]instanceof Element&&(c.push(a[b]),g.add(a[b],this.config.classes.selectable));this.nodes=this.nodes.concat(c);this.update(); + for(b=0;bthis.config.saveState&&this.states.shift();this.currentState=this.states.length-1;b=!0;break;case "undo":0this.v[1]?"selectable.state.":"state.")+a,this.states[this.currentState],this.states)},enable:function(){if(!this.enabled){var a=this.config.keys;this.enabled=!0;this.canShift=0<=a.indexOf("shiftKey");this.canCtrl=0<=a.indexOf("ctrlKey");this.canMeta=0<=a.indexOf("metaKey");this.bind(); + g.add(this.container,this.config.classes.container);this.emit(15>this.v[1]?"selectable.enable":"enabled")}return this.enabled},disable:function(){this.enabled&&(this.enabled=!1,this.unbind(),g.remove(this.container,this.config.classes.container),this.emit(15>this.v[1]?"selectable.disable":"disabled"));return this.enabled},destroy:function(){this.disable();this.listeners=!1;this.clear();this.state("clear");this.remove(this.items);this.events=null},on:function(a,c,b){"string"===typeof a?(this.listeners= + this.listeners||{},this.listeners[a]=this.listeners[a]||[],this.listeners[a].push(c)):a.addEventListener(c,b,!1)},off:function(a,c,b){"string"===typeof a?(this.listeners=this.listeners||{},!1!==a in this.listeners&&this.listeners[a].splice(this.listeners[a].indexOf(c),1)):a.removeEventListener(c,b)},emit:function(a){this.listeners=this.listeners||{};if(!1!==a in this.listeners)for(var c=0;c=h&&(k||m))return this._maxReached();if(!(!this.container.contains(a.target)||3===a.which||0this.boundingRect.x1+this.scroll.size.x||this.scroll.scrollable.x&& b.pageY>this.boundingRect.y1+this.scroll.size.y)return!1;if(this.config.ignore){l=!1;var f=this.config.ignore;Array.isArray(f)||(f=[f]);for(h=0;h