-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.autocomplete.multi.min.js
More file actions
1 lines (1 loc) · 4.5 KB
/
jquery.autocomplete.multi.min.js
File metadata and controls
1 lines (1 loc) · 4.5 KB
1
(function(e){var t={BACKSPACE:8,LEFT:37,RIGHT:39,DELETE:46},n="NORESULTS",r="ADDNEW";e.widget("ui.autocomplete_multi",{options:{autoFocus:!0,minLength:1,delay:400,excludeDuplicates:!0,sortable:!1,title:"",inputWidth:50,noResultsText:"No results",addNewText:"Add new...",maxItems:null,focus:function(){return!1},renderItem:null,addNew:null},_create:function(){var t=this,i=t.options,s=t.element,o,u;t.name=s.attr("name"),s.removeAttr("name").hide(),s.data("autocomplete_multi",t);if(s.is(":input")){o={},u=[];if(s.is("select")){s.find("option").each(function(){var t=e(this),n=t.val();o[n]={value:n,label:t.html()},n&&t.is(":selected")&&u.push(n)});if(!i.source){i.source=[];for(var a in o)i.source.push(o[a])}}else try{var f=e.parseJSON(s.val());for(var l=0;l<f.length;l++)u.push(f[l].value),o[f[l].value]=f[l]}catch(c){}}t.wrapper=e("<ul class='ui-autocomplete-multi'/>"),t.input=e("<input type='text'/>").width(i.inputWidth),t.loading=e("<li class='ui-autocomplete-multi-loading'/>"),t.bit=e("<li class='ui-autocomplete-multi-bit'/>").append("<span class='ui-icon ui-icon-close'/>").append("<span class='ui-autocomplete-multi-bit-text'/>"),t.inputBit=e("<li class='ui-autocomplete-multi-input-bit'/>"),s.focus(function(){t.input.focus()}),i.renderItem||(i.renderItem=t._renderItem);var h=i.search?i.search:null;i.search=function(e,n){t.loading.show();if(h)return h(e,n)};var p=i.select||function(e,n){t.add(n.item)&&t.input.val("")};i.select=function(e,n){return n.item.value==r?i.addNew(t.input.val(),function(t){n.item=t,p.call(s,e,n)}):p.call(s,e,n),!1},t.wrapper.insertAfter(s).append(t.loading.hide()).append(t.inputBit.append(t.input)).append("<li style='display: block; clear: both;'/>").click(function(){t.focusBit(null),t.input.focus()}),i.appendTo=t.wrapper,i.position={my:"left top",at:"left bottom",of:t.wrapper},t.input.autocomplete(i);var d=t.input.data("ui-autocomplete");t._replaceSourceCallback(),t.wrapper.keydown(function(e){t._keyDown(e)}),t.input.keydown(function(e){t._keyDownInput(e)}),d._renderItem=function(e,s){var o;return s.value==n?(o=t._renderItem(s),o.addClass("ui-autocomplete-multi-noresults")):s.value==r?(o=t._renderItem(s),o.addClass("ui-autocomplete-multi-addnew")):o=i.renderItem.call(t,s),e.append(o),o};if(o&&u)for(var l=0;l<u.length;l++)t.add(o[u[l]]);i.sortable&&t.wrapper.sortable({items:".ui-autocomplete-multi-bit"}),i.title&&t.input.attr("title",i.title).hint()},destroy:function(){this.wrapper.remove(),this.element.show()},option:function(e,t){this.input.autocomplete("option",e,t),e=="source"&&this._replaceSourceCallback()},add:function(t){var r=this,i=r.options;if(t.value==n)return!1;i.excludeDuplicates&&r._getBits().each(function(){var n=e(this).data("autocomplete-item");t.value==n.value&&r.remove(this)});if(i.maxItems){bitCount=r._getBits().length;if(bitCount>=i.maxItems)return!1;bitCount==i.maxItems-1&&r.inputBit.hide()}return r.bit.clone().insertBefore(r.inputBit).data("autocomplete-item",t).click(function(e){r.focusBit(this),r.input.focus(),e.stopPropagation()}).children(".ui-autocomplete-multi-bit-text").html(t.label).end().children(".ui-icon-close").click(function(){r.remove(e(this).parent())}).end().append(e('<input type="hidden" />').attr("name",r.name).val(t.value)),r.focusBit(null),!0},remove:function(t){var n=this;t=e(t);if(t.hasClass("ui-state-focus")){var r=t.prev();r.length||(r=t.next()),n.focusBit(r)}t.remove(),n.inputBit.show()},removeAll:function(){this._getBits().remove(),this.inputBit.show()},clearInput:function(){this.input.val("")},focusBit:function(t){var n=this,r=n._getBits();t=e(t),r.removeClass("ui-state-focus"),t.length>0&&t[0]!=n.inputBit[0]&&t.addClass("ui-state-focus")},_replaceSourceCallback:function(){var e=this,t=e.input.data("ui-autocomplete"),i=t.source,s=e.options;t.source=function(t,u){i(t,function(t){e.loading.hide(),t||(t=[]),s.addNew?t.push({label:s.addNewText,value:r}):t.length==0&&t.push({label:s.noResultsText,value:n}),u(t)})}},_getBits:function(){return this.wrapper.children(".ui-autocomplete-multi-bit")},_renderItem:function(t){return e("<li/>").data("item.autocomplete",t).append(t.label).wrapInner("<a/>")},_keyDownInput:function(e){var t=this,n=t.input.val();n!=""&&e.stopPropagation()},_keyDown:function(e){var n=this,r=n.wrapper.children(".ui-state-focus");switch(e.keyCode){case t.BACKSPACE:r.length?n.remove(r):(n.focusBit(n.inputBit.prev()),e.preventDefault());break;case t.DELETE:r.length&&n.remove(r);break;case t.LEFT:r.length?n.focusBit(r.prev()):n.focusBit(n.inputBit.prev());break;case t.RIGHT:r.length?n.focusBit(r.next()):n.focusBit(n._getBits().eq(0))}}})})(jQuery);