/* ================== Pollyfills ================== */ /* Object.assign() Pollyfill */ "function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){"use strict";if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(e),r=1;r= this.options.max ){ console.log('max tags limit reached'); return true; } if(!this.options.duplicate && this.arr.indexOf(string) != -1 ){ console.log('duplicate found " '+string+' " ') return true; } return false; } // Add tags programmatically TagsInput.prototype.addData = function(array){ var plugin = this; array.forEach(function(string){ plugin.addTag(string); }) return this; } // Get the Input String TagsInput.prototype.getInputString = function(){ return this.arr.join(','); } // destroy the plugin TagsInput.prototype.destroy = function(){ this.orignal_input.removeAttribute('hidden'); delete this.orignal_input; var self = this; Object.keys(this).forEach(function(key){ if(self[key] instanceof HTMLElement) self[key].remove(); if(key != 'options') delete self[key]; }); initialized = false; } // Private function to initialize the tag input plugin function init(tags){ tags.wrapper.append(tags.input); tags.wrapper.classList.add(tags.options.wrapperClass); tags.orignal_input.setAttribute('hidden' , 'true'); tags.orignal_input.parentNode.insertBefore(tags.wrapper , tags.orignal_input); } // initialize the Events function initEvents(tags){ tags.wrapper.addEventListener('click' ,function(){ tags.input.focus(); }); tags.input.addEventListener('keydown' , function(e){ var str = tags.input.value.trim(); if( !!(~[9 , 13 , 188].indexOf( e.keyCode )) ) { tags.input.value = ""; if(str != "") tags.addTag(str); } }); } // Set All the Default Values TagsInput.defaults = { selector : '', wrapperClass : 'tags-input-wrapper', tagClass : 'tag', max : null, duplicate: false } return TagsInput; });