Hi, Sean S

##### Tagify

Actions
Tagify - Lightweight input tags plugin.
For more info please visit the plugin's Demo Page or Github Repo.

### Tags Input Examples

                                        <div class="card card-custom">
                                            <div class="card-header">
                                                <h3 class="card-title">
                                                    Tags Input Examples
                                                </h3>
                                            </div>
                                            <!--begin::Form-->
                                            <form class="form">
                                                <div class="card-body">
                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Basic example</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">
                                                            <input id="kt_tagify_1" class="form-control tagify" name='tags' placeholder='type...' value='css, html, javascript'  data-blacklist='.NET,PHP'/>

                                                            <div class="mt-3">
                                                                <a href="javascript:;" id="kt_tagify_1_remove" class="btn btn-sm btn-light-primary font-weight-bold">Remove tags</a>
                                                            </div>

                                                            <div class="mt-3 text-muted">
                                                                In this example, the field is pre-occupied with 4 tags. The last tag (CSS) has the same value as the first tag, and will be removed,
                                                                because the duplicates setting is set to true.
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="separator separator-dashed my-4"></div>

                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Whitelist examples</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">
                                                            <input id="kt_tagify_2" class="form-control tagify" placeholder='type...' value='Back to the Future, Whiplash'  data-blacklist='.NET,PHP'/>

                                                            <div class="mt-3 text-muted">
                                                                In this example, the field is pre-occupied with 3 tags, and last tag is not included in the whitelist, and will be removed because the enforce whitelist option flag is set to true
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="separator separator-dashed my-4"></div>

                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Templates examples</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">
                                                            <input id="kt_tagify_5" class="form-control tagify" name='tags3' placeholder="Add users" value="Chris Muller, Lina Nilson"/>

                                                            <div class="mt-3 text-muted">
                                                                Dropdown item and tag templates.
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="separator separator-dashed my-4"></div>

                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Outside of the box example</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">

                                                            <input id="kt_tagify_3" class="form-control" name='tags-outside' class='form-control tagify tagify--outside' value='css, html, javascript' placeholder='write some tags'/>

                                                            <div class="mt-3 text-muted">
                                                                Some cases might require addition of tags from outside of the box and not within.
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="separator separator-dashed my-4"></div>

                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Theme Colors</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">
                                                            <input id="kt_tagify_4" class="form-control" name='tags3' placeholder='Write some tags' pattern='^[A-Za-z_✲ ]{1,15}$' value='css, html, javascript, angular, vue, react'/>

                                                            <div class="mt-3 text-muted">
                                                                In this example, the dropdown.enabled setting is set (minimum charactes typed to show the dropdown) to 3.
                                                                Maximum number of tags is set to 6
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="separator separator-dashed my-4"></div>

                                                    <div class="form-group row">
                                                        <label class="col-form-label text-right col-lg-3 col-sm-12">Theme Light Colors</label>
                                                        <div class="col-lg-6 col-md-9 col-sm-12">
                                                            <input id="kt_tagify_6" class="form-control" name='tags3' placeholder='Write some tags' pattern='^[A-Za-z_✲ ]{1,15}$' value='css, html, javascript, angular, vue, react'/>

                                                            <div class="mt-3 text-muted">
                                                                In this example, the dropdown.enabled setting is set (minimum charactes typed to show the dropdown) to 3.
                                                                Maximum number of tags is set to 6
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                                <div class="card-footer">
                                                    <div class="row">
                                                        <div class="col-lg-9 ml-lg-auto">
                                                            <button type="reset" class="btn btn-primary mr-2">Submit</button>
                                                            <button type="reset" class="btn btn-secondary">Cancel</button>
                                                        </div>
                                                    </div>
                                                </div>
                                            </form>
                                            <!--end::Form-->
                                        </div>

                                        // Class definition
                                        var KTTagify = function() {

                                            // Private functions
                                            var demo1 = function() {
                                                var input = document.getElementById('kt_tagify_1'),
                                                    // init Tagify script on the above inputs
                                                    tagify = new Tagify(input, {
                                                        whitelist: ["A# .NET", "A# (Axiom)", "A-0 System", "A+", "A++", "ABAP", "ABC", "ABC ALGOL", "ABSET", "ABSYS", "ACC", "Accent", "Ace DASL", "ACL2", "Avicsoft", "ACT-III", "Action!", "ActionScript", "Ada", "Adenine", "Agda", "Agilent VEE", "Agora", "AIMMS", "Alef", "ALF", "ALGOL 58", "ALGOL 60", "ALGOL 68", "ALGOL W", "Alice", "Alma-0", "AmbientTalk", "Amiga E", "AMOS", "AMPL", "Apex (Salesforce.com)", "APL", "AppleScript", "Arc", "ARexx", "Argus", "AspectJ", "Assembly language", "ATS", "Ateji PX", "AutoHotkey", "Autocoder", "AutoIt", "AutoLISP / Visual LISP", "Averest", "AWK", "Axum", "Active Server Pages", "ASP.NET", "B", "Babbage", "Bash", "BASIC", "bc", "BCPL", "BeanShell", "Batch (Windows/Dos)", "Bertrand", "BETA", "Bigwig", "Bistro", "BitC", "BLISS", "Blockly", "BlooP", "Blue", "Boo", "Boomerang", "Bourne shell (including bash and ksh)", "BREW", "BPEL", "B", "C--", "C++ – ISO/IEC 14882", "C# – ISO/IEC 23270", "C/AL", "Caché ObjectScript", "C Shell", "Caml", "Cayenne", "CDuce", "Cecil", "Cesil", "Céu", "Ceylon", "CFEngine", "CFML", "Cg", "Ch", "Chapel", "Charity", "Charm", "Chef", "CHILL", "CHIP-8", "chomski", "ChucK", "CICS", "Cilk", "Citrine (programming language)", "CL (IBM)", "Claire", "Clarion", "Clean", "Clipper", "CLIPS", "CLIST", "Clojure", "CLU", "CMS-2", "COBOL – ISO/IEC 1989", "CobolScript – COBOL Scripting language", "Cobra", "CODE", "CoffeeScript", "ColdFusion", "COMAL", "Combined Programming Language (CPL)", "COMIT", "Common Intermediate Language (CIL)", "Common Lisp (also known as CL)", "COMPASS", "Component Pascal", "Constraint Handling Rules (CHR)", "COMTRAN", "Converge", "Cool", "Coq", "Coral 66", "Corn", "CorVision", "COWSEL", "CPL", "CPL", "Cryptol", "csh", "Csound", "CSP", "CUDA", "Curl", "Curry", "Cybil", "Cyclone", "Cython", "Java", "Javascript", "M2001", "M4", "M#", "Machine code", "MAD (Michigan Algorithm Decoder)", "MAD/I", "Magik", "Magma", "make", "Maple", "MAPPER now part of BIS", "MARK-IV now VISION:BUILDER", "Mary", "MASM Microsoft Assembly x86", "MATH-MATIC", "Mathematica", "MATLAB", "Maxima (see also Macsyma)", "Max (Max Msp – Graphical Programming Environment)", "Maya (MEL)", "MDL", "Mercury", "Mesa", "Metafont", "Microcode", "MicroScript", "MIIS", "Milk (programming language)", "MIMIC", "Mirah", "Miranda", "MIVA Script", "ML", "Model 204", "Modelica", "Modula", "Modula-2", "Modula-3", "Mohol", "MOO", "Mortran", "Mouse", "MPD", "Mathcad", "MSIL – deprecated name for CIL", "MSL", "MUMPS", "Mystic Programming L"],
                                                        blacklist: [".NET", "PHP"], // <-- passed as an attribute in this demo
                                                    })

                                                // "remove all tags" button event listener
                                                document.getElementById('kt_tagify_1_remove').addEventListener('click', tagify.removeAllTags.bind(tagify))

                                                // Chainable event listeners
                                                tagify.on('add', onAddTag)
                                                    .on('remove', onRemoveTag)
                                                    .on('input', onInput)
                                                    .on('edit', onTagEdit)
                                                    .on('invalid', onInvalidTag)
                                                    .on('click', onTagClick)
                                                    .on('dropdown:show', onDropdownShow)
                                                    .on('dropdown:hide', onDropdownHide)

                                                // tag added callback
                                                function onAddTag(e) {
                                                    console.log("onAddTag: ", e.detail);
                                                    console.log("original input value: ", input.value)
                                                    tagify.off('add', onAddTag) // exmaple of removing a custom Tagify event
                                                }

                                                // tag remvoed callback
                                                function onRemoveTag(e) {
                                                    console.log(e.detail);
                                                    console.log("tagify instance value:", tagify.value)
                                                }

                                                // on character(s) added/removed (user is typing/deleting)
                                                function onInput(e) {
                                                    console.log(e.detail);
                                                    console.log("onInput: ", e.detail);
                                                }

                                                function onTagEdit(e) {
                                                    console.log("onTagEdit: ", e.detail);
                                                }

                                                // invalid tag added callback
                                                function onInvalidTag(e) {
                                                    console.log("onInvalidTag: ", e.detail);
                                                }

                                                // invalid tag added callback
                                                function onTagClick(e) {
                                                    console.log(e.detail);
                                                    console.log("onTagClick: ", e.detail);
                                                }

                                                function onDropdownShow(e) {
                                                    console.log("onDropdownShow: ", e.detail)
                                                }

                                                function onDropdownHide(e) {
                                                    console.log("onDropdownHide: ", e.detail)
                                                }
                                            }

                                            var demo2 = function() {
                                                var input = document.getElementById('kt_tagify_2');
                                                var tagify = new Tagify(input, {
                                                    enforceWhitelist: true,
                                                    whitelist: ["The Shawshank Redemption", "The Godfather", "The Godfather: Part II", "The Dark Knight", "12 Angry Men", "Schindler's List", "Pulp Fiction", "The Lord of the Rings: The Return of the King", "The Good, the Bad and the Ugly", "Fight Club", "The Lord of the Rings: The Fellowship of the Ring", "Star Wars: Episode V - The Empire Strikes Back", "Forrest Gump", "Inception", "The Lord of the Rings: The Two Towers", "One Flew Over the Cuckoo's Nest", "Goodfellas", "The Matrix", "Seven Samurai", "Star Wars: Episode IV - A New Hope", "City of God", "Se7en", "The Silence of the Lambs", "It's a Wonderful Life", "The Usual Suspects", "Life Is Beautiful", "Léon: The Professional", "Spirited Away", "Saving Private Ryan", "La La Land", "Once Upon a Time in the West", "American History X", "Interstellar", "Casablanca", "Psycho", "City Lights", "The Green Mile", "Raiders of the Lost Ark", "The Intouchables", "Modern Times", "Rear Window", "The Pianist", "The Departed", "Terminator 2: Judgment Day", "Back to the Future", "Whiplash", "Gladiator", "Memento", "Apocalypse Now", "The Prestige", "The Lion King", "Alien", "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb", "Sunset Boulevard", "The Great Dictator", "Cinema Paradiso", "The Lives of Others", "Paths of Glory", "Grave of the Fireflies", "Django Unchained", "The Shining", "WALL·E", "American Beauty", "The Dark Knight Rises", "Princess Mononoke", "Aliens", "Oldboy", "Once Upon a Time in America", "Citizen Kane", "Das Boot", "Witness for the Prosecution", "North by Northwest", "Vertigo", "Star Wars: Episode VI - Return of the Jedi", "Reservoir Dogs", "M", "Braveheart", "Amélie", "Requiem for a Dream", "A Clockwork Orange", "Taxi Driver", "Lawrence of Arabia", "Like Stars on Earth", "Double Indemnity", "To Kill a Mockingbird", "Eternal Sunshine of the Spotless Mind", "Toy Story 3", "Amadeus", "My Father and My Son", "Full Metal Jacket", "The Sting", "2001: A Space Odyssey", "Singin' in the Rain", "Bicycle Thieves", "Toy Story", "Dangal", "The Kid", "Inglourious Basterds", "Snatch", "Monty Python and the Holy Grail", "Hacksaw Ridge", "3 Idiots", "L.A. Confidential", "For a Few Dollars More", "Scarface", "Rashomon", "The Apartment", "The Hunt", "Good Will Hunting", "Indiana Jones and the Last Crusade", "A Separation", "Metropolis", "Yojimbo", "All About Eve", "Batman Begins", "Up", "Some Like It Hot", "The Treasure of the Sierra Madre", "Unforgiven", "Downfall", "Raging Bull", "The Third Man", "Die Hard", "Children of Heaven", "The Great Escape", "Heat", "Chinatown", "Inside Out", "Pan's Labyrinth", "Ikiru", "My Neighbor Totoro", "On the Waterfront", "Room", "Ran", "The Gold Rush", "The Secret in Their Eyes", "The Bridge on the River Kwai", "Blade Runner", "Mr. Smith Goes to Washington", "The Seventh Seal", "Howl's Moving Castle", "Lock, Stock and Two Smoking Barrels", "Judgment at Nuremberg", "Casino", "The Bandit", "Incendies", "A Beautiful Mind", "A Wednesday", "The General", "The Elephant Man", "Wild Strawberries", "Arrival", "V for Vendetta", "Warrior", "The Wolf of Wall Street", "Manchester by the Sea", "Sunrise", "The Passion of Joan of Arc", "Gran Torino", "Rang De Basanti", "Trainspotting", "Dial M for Murder", "The Big Lebowski", "The Deer Hunter", "Tokyo Story", "Gone with the Wind", "Fargo", "Finding Nemo", "The Sixth Sense", "The Thing", "Hera Pheri", "Cool Hand Luke", "Andaz Apna Apna", "Rebecca", "No Country for Old Men", "How to Train Your Dragon", "Munna Bhai M.B.B.S.", "Sholay", "Kill Bill: Vol. 1", "Into the Wild", "Mary and Max", "Gone Girl", "There Will Be Blood", "Come and See", "It Happened One Night", "Life of Brian", "Rush", "Hotel Rwanda", "Platoon", "Shutter Island", "Network", "The Wages of Fear", "Stand by Me", "Wild Tales", "In the Name of the Father", "Spotlight", "Star Wars: The Force Awakens", "The Nights of Cabiria", "The 400 Blows", "Butch Cassidy and the Sundance Kid", "Mad Max: Fury Road", "The Maltese Falcon", "12 Years a Slave", "Ben-Hur", "The Grand Budapest Hotel", "Persona", "Million Dollar Baby", "Amores Perros", "Jurassic Park", "The Princess Bride", "Hachi: A Dog's Tale", "Memories of Murder", "Stalker", "Nausicaä of the Valley of the Wind", "Drishyam", "The Truman Show", "The Grapes of Wrath", "Before Sunrise", "Touch of Evil", "Annie Hall", "The Message", "Rocky", "Gandhi", "Harry Potter and the Deathly Hallows: Part 2", "The Bourne Ultimatum", "Diabolique", "Donnie Darko", "Monsters, Inc.", "Prisoners", "8½", "The Terminator", "The Wizard of Oz", "Catch Me If You Can", "Groundhog Day", "Twelve Monkeys", "Zootopia", "La Haine", "Barry Lyndon", "Jaws", "The Best Years of Our Lives", "Infernal Affairs", "Udaan", "The Battle of Algiers", "Strangers on a Train", "Dog Day Afternoon", "Sin City", "Kind Hearts and Coronets", "Gangs of Wasseypur", "The Help"],
                                                    callbacks: {
                                                        add: console.log, // callback when adding a tag
                                                        remove: console.log // callback when removing a tag
                                                    }
                                                });
                                            }

                                            var demo3 = function() {
                                                var input = document.getElementById('kt_tagify_3');

                                                // init Tagify script on the above inputs
                                                var tagify = new Tagify(input);

                                                // add a class to Tagify's input element
                                                //tagify.DOM.input.classList.remove('tagify__input');
                                                tagify.DOM.input.classList.add('form-control');
                                                tagify.DOM.input.setAttribute('placeholder', 'enter tag...');

                                                // re-place Tagify's input element outside of the  element (tagify.DOM.scope), just before it
                                                tagify.DOM.scope.parentNode.insertBefore(tagify.DOM.input, tagify.DOM.scope);
                                            }

                                            var demo4 = function() {
                                                var input = document.getElementById('kt_tagify_4');
                                                var tagify = new Tagify(input, {
                                                    pattern: /^.{0,20}$/, // Validate typed tag(s) by Regex. Here maximum chars length is defined as "20"
                                                    delimiters: ", ", // add new tags when a comma or a space character is entered
                                                    maxTags: 6,
                                                    blacklist: ["fuck", "shit", "pussy"],
                                                    keepInvalidTags: true, // do not remove invalid tags (but keep them marked as invalid)
                                                    whitelist: ["temple", "stun", "detective", "sign", "passion", "routine", "deck", "discriminate", "relaxation", "fraud", "attractive", "soft", "forecast", "point", "thank", "stage", "eliminate", "effective", "flood", "passive", "skilled", "separation", "contact", "compromise", "reality", "district", "nationalist", "leg", "porter", "conviction", "worker", "vegetable", "commerce", "conception", "particle", "honor", "stick", "tail", "pumpkin", "core", "mouse", "egg", "population", "unique", "behavior", "onion", "disaster", "cute", "pipe", "sock", "dialect", "horse", "swear", "owner", "cope", "global", "improvement", "artist", "shed", "constant", "bond", "brink", "shower", "spot", "inject", "bowel", "homosexual", "trust", "exclude", "tough", "sickness", "prevalence", "sister", "resolution", "cattle", "cultural", "innocent", "burial", "bundle", "thaw", "respectable", "thirsty", "exposure", "team", "creed", "facade", "calendar", "filter", "utter", "dominate", "predator", "discover", "theorist", "hospitality", "damage", "woman", "rub", "crop", "unpleasant", "halt", "inch", "birthday", "lack", "throne", "maximum", "pause", "digress", "fossil", "policy", "instrument", "trunk", "frame", "measure", "hall", "support", "convenience", "house", "partnership", "inspector", "looting", "ranch", "asset", "rally", "explicit", "leak", "monarch", "ethics", "applied", "aviation", "dentist", "great", "ethnic", "sodium", "truth", "constellation", "lease", "guide", "break", "conclusion", "button", "recording", "horizon", "council", "paradox", "bride", "weigh", "like", "noble", "transition", "accumulation", "arrow", "stitch", "academy", "glimpse", "case", "researcher", "constitutional", "notion", "bathroom", "revolutionary", "soldier", "vehicle", "betray", "gear", "pan", "quarter", "embarrassment", "golf", "shark", "constitution", "club", "college", "duty", "eaux", "know", "collection", "burst", "fun", "animal", "expectation", "persist", "insure", "tick", "account", "initiative", "tourist", "member", "example", "plant", "river", "ratio", "view", "coast", "latest", "invite", "help", "falsify", "allocation", "degree", "feel", "resort", "means", "excuse", "injury", "pupil", "shaft", "allow", "ton", "tube", "dress", "speaker", "double", "theater", "opposed", "holiday", "screw", "cutting", "picture", "laborer", "conservation", "kneel", "miracle", "primary", "nomination", "characteristic", "referral", "carbon", "valley", "hot", "climb", "wrestle", "motorist", "update", "loot", "mosquito", "delivery", "eagle", "guideline", "hurt", "feedback", "finish", "traffic", "competence", "serve", "archive", "feeling", "hope", "seal", "ear", "oven", "vote", "ballot", "study", "negative", "declaration", "particular", "pattern", "suburb", "intervention", "brake", "frequency", "drink", "affair", "contemporary", "prince", "dry", "mole", "lazy", "undermine", "radio", "legislation", "circumstance", "bear", "left", "pony", "industry", "mastermind", "criticism", "sheep", "failure", "chain", "depressed", "launch", "script", "green", "weave", "please", "surprise", "doctor", "revive", "banquet", "belong", "correction", "door", "image", "integrity", "intermediate", "sense", "formal", "cane", "gloom", "toast", "pension", "exception", "prey", "random", "nose", "predict", "needle", "satisfaction", "establish", "fit", "vigorous", "urgency", "X-ray", "equinox", "variety", "proclaim", "conceive", "bulb", "vegetarian", "available", "stake", "publicity", "strikebreaker", "portrait", "sink", "frog", "ruin", "studio", "match", "electron", "captain", "channel", "navy", "set", "recommend", "appoint", "liberal", "missile", "sample", "result", "poor", "efflux", "glance", "timetable", "advertise", "personality", "aunt", "dog"],
                                                    transformTag: transformTag,
                                                    dropdown: {
                                                        enabled: 3,
                                                    }
                                                });

                                                function transformTag(tagData) {
                                                    var states = [
                                                        'success',
                                                        'primary',
                                                        'danger',
                                                        'success',
                                                        'warning',
                                                        'dark',
                                                        'primary',
                                                        'info'];

                                                    tagData.class = 'tagify__tag tagify__tag--' + states[KTUtil.getRandomInt(0, 7)];

                                                    if (tagData.value.toLowerCase() == 'shit') {
                                                        tagData.value = 's✲✲t'
                                                    }
                                                }

                                                tagify.on('add', function(e) {
                                                    console.log(e.detail)
                                                });

                                                tagify.on('invalid', function(e) {
                                                    console.log(e, e.detail);
                                                });
                                            }

                                            var demo5 = function() {
                                                // Init autocompletes
                                                var toEl = document.getElementById('kt_tagify_5');
                                                var tagifyTo = new Tagify(toEl, {
                                                    delimiters: ", ", // add new tags when a comma or a space character is entered
                                                    maxTags: 10,
                                                    blacklist: ["fuck", "shit", "pussy"],
                                                    keepInvalidTags: true, // do not remove invalid tags (but keep them marked as invalid)
                                                    whitelist: [
                                                        {
                                                        value : 'Chris Muller',
                                                        email : 'chris.muller@wix.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_11.jpg',
                                                        class : 'tagify__tag--primary'
                                                    }, {
                                                        value : 'Nick Bold',
                                                        email : 'nick.seo@gmail.com',
                                                        initials: 'SS',
                                                        initialsState: 'warning',
                                                        pic: ''
                                                    }, {
                                                        value : 'Alon Silko',
                                                        email : 'alon@keenthemes.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_6.jpg'
                                                    }, {
                                                        value : 'Sam Seanic',
                                                        email : 'sam.senic@loop.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_8.jpg'
                                                    }, {
                                                        value : 'Sara Loran',
                                                        email : 'sara.loran@tilda.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_9.jpg'
                                                    }, {
                                                        value : 'Eric Davok',
                                                        email : 'davok@mix.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_13.jpg'
                                                    }, {
                                                        value : 'Sam Seanic',
                                                        email : 'sam.senic@loop.com',
                                                        initials: '',
                                                        initialsState: '',
                                                        pic: './assets/media/users/100_13.jpg'
                                                    }, {
                                                        value : 'Lina Nilson',
                                                        email : 'lina.nilson@loop.com',
                                                        initials: 'LN',
                                                        initialsState: 'danger',
                                                        pic: './assets/media/users/100_15.jpg'
                                                    }],
                                                    templates: {
                                                        dropdownItem : function(tagData){
                                                            try{
                                                                return '<div class="tagify__dropdown__item">' +
                                                                    '<div class="kt-media-card">' +
                                                                    '    <span class="kt-media kt-media--'+(tagData.initialsState?tagData.initialsState:'')+'" style="background-image: url('+tagData.pic+')">' +
                                                                    '        <span>'+tagData.initials+'</span>' +
                                                                    '    </span>' +
                                                                    '    <div class="kt-media-card__info">' +
                                                                    '        <a href="#" class="kt-media-card__title">'+tagData.value+'</a>' +
                                                                    '        <span class="kt-media-card__desc">'+tagData.email+'</span>' +
                                                                    '    </div>' +
                                                                    '</div>' +
                                                                    '</div>';
                                                            }
                                                            catch(err){}
                                                        }
                                                    },
                                                    transformTag: function(tagData) {
                                                        tagData.class = 'tagify__tag tagify__tag--primary';
                                                    },
                                                    dropdown : {
                                                        classname : "color-blue",
                                                        enabled   : 1,
                                                        maxItems  : 5
                                                    }
                                                });
                                            }

                                            var demo6 = function() {
                                                var input = document.getElementById('kt_tagify_6');
                                                var tagify = new Tagify(input, {
                                                    pattern: /^.{0,20}$/, // Validate typed tag(s) by Regex. Here maximum chars length is defined as "20"
                                                    delimiters: ", ", // add new tags when a comma or a space character is entered
                                                    maxTags: 6,
                                                    blacklist: ["fuck", "shit", "pussy"],
                                                    keepInvalidTags: true, // do not remove invalid tags (but keep them marked as invalid)
                                                    whitelist: ["temple", "stun", "detective", "sign", "passion", "routine", "deck", "discriminate", "relaxation", "fraud", "attractive", "soft", "forecast", "point", "thank", "stage", "eliminate", "effective", "flood", "passive", "skilled", "separation", "contact", "compromise", "reality", "district", "nationalist", "leg", "porter", "conviction", "worker", "vegetable", "commerce", "conception", "particle", "honor", "stick", "tail", "pumpkin", "core", "mouse", "egg", "population", "unique", "behavior", "onion", "disaster", "cute", "pipe", "sock", "dialect", "horse", "swear", "owner", "cope", "global", "improvement", "artist", "shed", "constant", "bond", "brink", "shower", "spot", "inject", "bowel", "homosexual", "trust", "exclude", "tough", "sickness", "prevalence", "sister", "resolution", "cattle", "cultural", "innocent", "burial", "bundle", "thaw", "respectable", "thirsty", "exposure", "team", "creed", "facade", "calendar", "filter", "utter", "dominate", "predator", "discover", "theorist", "hospitality", "damage", "woman", "rub", "crop", "unpleasant", "halt", "inch", "birthday", "lack", "throne", "maximum", "pause", "digress", "fossil", "policy", "instrument", "trunk", "frame", "measure", "hall", "support", "convenience", "house", "partnership", "inspector", "looting", "ranch", "asset", "rally", "explicit", "leak", "monarch", "ethics", "applied", "aviation", "dentist", "great", "ethnic", "sodium", "truth", "constellation", "lease", "guide", "break", "conclusion", "button", "recording", "horizon", "council", "paradox", "bride", "weigh", "like", "noble", "transition", "accumulation", "arrow", "stitch", "academy", "glimpse", "case", "researcher", "constitutional", "notion", "bathroom", "revolutionary", "soldier", "vehicle", "betray", "gear", "pan", "quarter", "embarrassment", "golf", "shark", "constitution", "club", "college", "duty", "eaux", "know", "collection", "burst", "fun", "animal", "expectation", "persist", "insure", "tick", "account", "initiative", "tourist", "member", "example", "plant", "river", "ratio", "view", "coast", "latest", "invite", "help", "falsify", "allocation", "degree", "feel", "resort", "means", "excuse", "injury", "pupil", "shaft", "allow", "ton", "tube", "dress", "speaker", "double", "theater", "opposed", "holiday", "screw", "cutting", "picture", "laborer", "conservation", "kneel", "miracle", "primary", "nomination", "characteristic", "referral", "carbon", "valley", "hot", "climb", "wrestle", "motorist", "update", "loot", "mosquito", "delivery", "eagle", "guideline", "hurt", "feedback", "finish", "traffic", "competence", "serve", "archive", "feeling", "hope", "seal", "ear", "oven", "vote", "ballot", "study", "negative", "declaration", "particular", "pattern", "suburb", "intervention", "brake", "frequency", "drink", "affair", "contemporary", "prince", "dry", "mole", "lazy", "undermine", "radio", "legislation", "circumstance", "bear", "left", "pony", "industry", "mastermind", "criticism", "sheep", "failure", "chain", "depressed", "launch", "script", "green", "weave", "please", "surprise", "doctor", "revive", "banquet", "belong", "correction", "door", "image", "integrity", "intermediate", "sense", "formal", "cane", "gloom", "toast", "pension", "exception", "prey", "random", "nose", "predict", "needle", "satisfaction", "establish", "fit", "vigorous", "urgency", "X-ray", "equinox", "variety", "proclaim", "conceive", "bulb", "vegetarian", "available", "stake", "publicity", "strikebreaker", "portrait", "sink", "frog", "ruin", "studio", "match", "electron", "captain", "channel", "navy", "set", "recommend", "appoint", "liberal", "missile", "sample", "result", "poor", "efflux", "glance", "timetable", "advertise", "personality", "aunt", "dog"],
                                                    transformTag: transformTag,
                                                    dropdown: {
                                                        enabled: 3,
                                                    }
                                                });

                                                function transformTag(tagData) {
                                                    var states = [
                                                        'success',
                                                        'primary',
                                                        'danger',
                                                        'success',
                                                        'warning',
                                                        'dark',
                                                        'primary',
                                                        'info'];

                                                    tagData.class = 'tagify__tag tagify__tag-light--' + states[KTUtil.getRandomInt(0, 7)];

                                                    if (tagData.value.toLowerCase() == 'shit') {
                                                        tagData.value = 's✲✲t'
                                                    }
                                                }

                                                tagify.on('add', function(e) {
                                                    console.log(e.detail)
                                                });

                                                tagify.on('invalid', function(e) {
                                                    console.log(e, e.detail);
                                                });
                                            }
                                            return {
                                                // public functions
                                                init: function() {
                                                    demo1();
                                                    demo2();
                                                    demo3();
                                                    demo4();
                                                    demo5();
                                                    demo6();
                                                }
                                            };
                                        }();

                                        jQuery(document).ready(function() {
                                            KTTagify.init();
                                        });

Basic example
Remove tags
In this example, the field is pre-occupied with 4 tags. The last tag (CSS) has the same value as the first tag, and will be removed, because the duplicates setting is set to true.
Readonly example
If the original input field has a readonly attribute, then, via CSS, there will be no way of manually adding tags because the inline contenteditable element will be hidden.
Whitelist examples
In this example, the field is pre-occupied with 3 tags, and last tag is not included in the whitelist, and will be removed because the enforce whitelist option flag is set to true
Templates examples
Dropdown item and tag templates.
Outside of the box example
Some cases might require addition of tags from outside of the box and not within.
Theme Colorss
In this example, the dropdown.enabled setting is set (minimum charactes typed to show the dropdown) to 3. Maximum number of tags is set to 6
Theme Light Colors
In this example, the dropdown.enabled setting is set (minimum charactes typed to show the dropdown) to 3. Maximum number of tags is set to 6

### User Profile 12 messages

James Jones
Application Developer
jm@softplus.com Sign Out
My Profile
Account settings and more update
My Messages
Inbox and tasks
My Activities
Logs and notifications
My Tasks
latest tasks and projects

##### Recent Notifications

Another purpose persuade Due in 2 Days
+28%
Would be to people Due in 2 Days
+50%
Purpose would be to persuade Due in 2 Days
-27%
The best product Due in 2 Days
+8%

#### Shopping Cart

iBlender The best kitchen gadget in 2020
$ 350 for 5
SmartCleaner Smart tool for cooking
$ 650 for 4
CameraMax Professional camera for edge cutting shots
$ 150 for 3
4D Printer Manufactoring unique objects
$ 1450 for 7
MotionWire Perfect animation tool
$ 650 for 7

##### System Messages

Top Authors Most Successful Fellas
+82$
Popular Authors Most Successful Fellas
+280$
New Users Most Successful Fellas
+4500$
Active Customers Most Successful Fellas
+4500$
Bestseller Theme Most Successful Fellas
+4500$

##### Notifications

Another purpose persuade Due in 2 Days
+28%
Would be to people Due in 2 Days
+50%
Purpose would be to persuade Due in 2 Days
-27%
The best product Due in 2 Days
+8%
5 new user generated report
Reports based on sales
2 new items submited
by Grog John
79 PSD files generated
Reports based on sales
$2900 worth producucts sold
Total 234 items
4.5h-avarage response time
Fostest is Barry
3 Defence alerts
40% less alerts thar last week
Avarage 4 blog posts per author
Most posted 12 time
16 authors joined last week
9 photodrapehrs, 7 designer
2 new items have been submited
by Grog John
2.8 GB-total downloads size
Mostly PSD end AL concepts
$2900 worth producucts sold
Total 234 items
7 new user generated report
Reports based on sales
4.5h-avarage response time
Fostest is Barry

##### Customer Care

Enable Notifications:
Enable Case Tracking:
Support Portal:

##### Reports

Generate Reports:
Enable Report Export:
Allow Data Collection:

##### Memebers

Enable Member singup:
Allow User Feedbacks:
Enable Customer Portal:
Matt Pears
Active
Matt Pears 2 Hours
How likely are you to recommend our company to your friends and family?
3 minutes You
Hey there, we’re just writing to let you know that you’ve been subscribed to a repository on GitHub.
Matt Pears 40 seconds
Ok, Understood!
Just now You
You’ll receive notifications for all issues, pull requests!
Matt Pears 40 seconds
You can unwatch this repository immediately by clicking here: https://github.com
Just now You
Discover what students who viewed Learn Figma - UI/UX Design. Essential Training also viewed
Matt Pears 40 seconds
Most purchased Business courses during this sale!
Just now You
Company BBQ to celebrate the last quater achievements and goals. Food and drinks provided

#### Select A Demo

##### Demo 1

Default RTL Version

##### Demo 2

Default RTL Version

##### Demo 3

Default RTL Version

##### Demo 4

Default RTL Version

##### Demo 5

Default RTL Version

##### Demo 6

Default RTL Version

##### Demo 7

Default RTL Version

##### Demo 8

Default RTL Version

##### Demo 9

Default RTL Version

##### Demo 10

Default RTL Version

##### Demo 11

Default RTL Version

##### Demo 12

Default RTL Version

##### Demo 13

Default RTL Version

##### Demo 14

Coming soon

##### Demo 15

Coming soon

##### Demo 16

Coming soon

##### Demo 17

Coming soon

##### Demo 18

Coming soon

##### Demo 19

Coming soon

##### Demo 20

Coming soon

##### Demo 21

Coming soon

##### Demo 22

Coming soon

##### Demo 23

Coming soon

##### Demo 24

Coming soon

##### Demo 25

Coming soon

##### Demo 26

Coming soon

##### Demo 27

Coming soon

##### Demo 28

Coming soon

##### Demo 29

Coming soon

##### Demo 30

Coming soon