UNPKG

bootstrap-tags

Version:
3 lines 5.35 kB
/*! bootstrap-tags 2019-09-11 */ https://github.com/Serhioromano/bootstrap-tags.git !function(a){"use strict";function b(b,d){this.options=a.extend(!0,{},c,d);var e=this;e.options.values_url&&a.ajax({dataType:"json",async:!1,url:e.options.values_url}).done(function(b){"object"==typeof b&&(e.options.values=a.merge(e.options.values,b))}),e.options.values=e.options.onLoadDefaults(e.options.values);var f=a(document.createElement("span")).addClass("pills-list").appendTo(b);if(e.options.values=e._prepare(e.options.values),a.each(e.options.values,function(a,b){e.addTag(f,b)}),e.options.can_add){var g=a(a.parseHTML(e.options.templates.input)).attr({placeholder:e.options.placeholder}).typeahead({source:function(b,c){var d=a.merge([],e.options.suggestions);e.options.suggestion_url&&a.ajax({dataType:"json",async:!1,url:e.options.suggestion_url,data:{q:b,limit:e.options.suggestion_limit}}).done(function(b){"object"==typeof b&&(d=a.merge(d,b))}),d=e._prepare(d),d=e.options.onLoadSuggestions(d),c(d)},updater:function(a){e._addTag(f,g,a)}});0==e.options.only_suggestions&&g.keypress(function(b){return a(this).val()&&13==b.keyCode?(e._addTag(f,a(this)),!1):void 0});var h=a(e.options.templates.input_pill).append(g).append(a(e.options.templates.ok_icon).css("cursor","pointer").click(function(a){a.stopPropagation(),e._addTag(f,g),g.focus()})).appendTo(b);a(e.options.templates.add_pill).addClass("add-pill").css("cursor","pointer").append(a(document.createElement("span")).attr({}).addClass("tag-add").append(e.options.templates.plus_icon)).click(function(){h.removeClass("d-none"),g.focus();var b=a(this);b.hide(),setTimeout(function(){a("body").one("click",function(){h.addClass("d-none"),b.show()})},200)}).appendTo(b)}}var c={values:[],values_url:"",templates:{pill:'<span class="badge badge-info badge-pill tag-badge p-3 mr-2">{0}</span>',add_pill:'<span class="badge badge-success badge-pill p-2 tag-badge">...</span>',input_pill:'<div class="d-none input-group mt-2" style="min-width:200px"></div>',number:" <sup><small>{0}</small></sup>",plus_icon:'<i class="icon icon-plus"></i>',delete_icon:'<i class="ml-2 icon icon-cancel"></i>',ok_icon:'<div class="input-group-append"><span class="input-group-text"><i class="icon icon-ok"></i></span></div>',input:'<input data-provide="typeahead" class="tag-input typeahead form-control" autocomplete="off" type="text">'},limit:0,tag_link_target:"",can_delete:!0,can_add:!0,double_hilight:"#0B3549",input_name:"tags[]",lang:{"delete":"Delete",limit:"You have reached limit of only {0} tags to be added."},placeholder:"Type to search...",suggestion_limit:15,suggestion_url:"",suggestions:[],only_suggestions:!1,remove_url:"",onLoadDefaults:function(a){return a},onRemove:function(a){},onError:function(a,b){alert(b)},onBeforeAdd:function(a,b){return a},onLoadSuggestions:function(a){return a},onDuplicate:null,onBeforeRemove:function(a){return!0}};b.prototype._prepare=function(b){return a.each(b,function(a,c){return c?("string"==typeof c&&(b[a]={id:c,name:c,suggest:c}),b[a].suggest=b[a].suggest||b[a].name,b[a].url=c.url||"",b[a].title=c.title||"",void(b[a].num=parseInt(c.num||"0"))):(delete b[a],!0)}),b},b.prototype._addTag=function(a,b,c){c||(c=this._prepare([b.val()])[0]),this.addTag(a,c)&&b.val("").focus()},b.prototype.addTag=function(b,c){var d=this;if(!c)return!1;if(parseInt(d.options.limit)>0&&b.children().length>=parseInt(d.options.limit))return d.options.onError(10,d.options.lang.limit.format(d.options.limit)),!1;("undefined"==typeof c.id||"undefined"==typeof c.name)&&(d.options.onError(11,"Not correct object format to create tag/pill"),a.error("Not correct object format to create tag/pill"));var e="";if(a.each(b.children(),function(b,d){return c.id.toString().toLowerCase()==a(d).data("tag-id").toString().toLowerCase()?(e=a(d),!1):void 0}),e){if(!d.options.onDuplicate){var f=a(b.children()[0]).css("background-color");return e.stop().animate({backgroundColor:d.options.double_hilight},100,"swing",function(){e.stop().animate({backgroundColor:f},100,"swing",function(){e.css("background-color","")})}),!1}if(1!=d.options.onDuplicate(e,c))return!1}if(c.url){var g=c.title?' data-toggle="tooltip" title="'+c.title+'"':"";c.name='<a class="tag-link" '+g+' target="'+d.options.tag_link_target+'" href="'+c.url+'">'+c.name+"</a>"}var h="";d.options.can_delete&&(h=a(document.createElement("a")).attr({href:"javascript:void(0)","class":"tag-remove"}).html(d.options.templates.delete_icon.toString()).click(function(){d.removeTag(this)}));var i=c.num>0?d.options.templates.number.format(c.num):"",j=a(d.options.templates.pill.format(c.name)).attr("data-tag-id",c.id).append(i,h,a(document.createElement("input")).attr({"data-tag-hidden":c.id,name:d.options.input_name,type:"hidden",value:c.id})).css({});return j=d.options.onBeforeAdd(j,c),b.append(j),a('[data-toggle="tooltip"]').tooltip(),!0},b.prototype.removeTag=function(b){var c=this,d=a(b).closest("[data-tag-id]");c.options.onBeforeRemove(d)!==!1&&(d.remove(),c.options.remove_url&&a.ajax({dataType:"json",async:!1,url:c.options.remove_url,data:{id:d.data("tag-id")}}))},a.fn.tags=function(c){return this.each(function(){new b(a(this),c)})}}(window.jQuery),String.prototype.format||(String.prototype.format=function(){var a=arguments;return this.replace(/{(\d+)}/g,function(b,c){return"undefined"!=typeof a[c]?a[c]:b})});