{ "version": 3, "file": "complete.js", "sourceRoot": "../src/coffee/", "sources": [ "complete.coffee" ], "names": [], "mappings": "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", "sourcesContent": [ "'use strict'\n\n###\n AJAX tags autocomplete plugin (requires qwest)\n How to use:\n 1. Create a wrapper element (e.g. a form) with an ID\n 2. Inside the wrapper, there must be an element with class 'ac_input'\n (most likely an input)\n 3. Call toggleAutocomplete(the_ac_input_element, '/url_where_to_retreive_data'[, {opts}])\n The ac_input element supports options given via data-*; currently implemented:\n - data-ac_search: if \"on\", then the ac list will have the 'search»' quick link, which\n updates the form and submits it automatically.\n###\n\n# tag separator\nsep = '#'\n# max amount of displayed tags\nlimit = 10\n\n# autocomplete input from a JSON list (retreived via AJAX)\n# opts:\n# - minChars\ntoggleAutocomplete = (elem, url, opts) ->\n\treturn unless elem?\n\t# Ensure autocomplete is off for this element\n\telem.autocomplete = \"off\"\n\t# get the JSON from the server\n\tqwest.post(url, null, { responseType: 'json' })\n\t\t.then (resp) ->\n\t\t\tsetupAutocomplete elem, opts, resp\n\t\t.catch (err) ->\n\t\t\tconsole.log \"Error retreiving data: #{err}\"\n\nsetupAutocomplete = (elem, opts, data) ->\n\tdata ?= []\n\t# element holding the autocomplete data\n\tul = document.createElement 'ul'\n\tul.className = 'ac_list'\n\tul.style.visibility = 'hidden'\n\tul.style.zIndex = 10\n\tul.id = 'ac_list'\n\tinsertAfter ul, elem\n\tsearch = elem.dataset?.acsearch == 'on'\n\telem.addEventListener \"keyup\", (e) ->\n\t\tcurTag = elem.value[elem.value.lastIndexOf(sep)+1 ..].trim()\n\t\tif not opts?.minChars? or curTag.length >= opts.minChars\n\t\t\tupdateAutocompleteList ul, curTag, data, { search: search }\n\t\telse\n\t\t\tul.innerHTML = \"\"\n\t\tul.style.width = \"#{elem.offsetWidth}px\"\n\t\tul.style.top = \"#{elem.offsetTop + elem.offsetHeight}px\"\n\t\tul.style.left = \"#{elem.offsetLeft}px\"\n\t\tul.style.visibility = if ul.innerHTML.length > 0 then 'visible' else 'hidden'\n\telem.addEventListener \"focus\", (e) ->\n\t\tul.style.visibility = if ul.innerHTML.length > 0 then 'visible' else 'hidden'\n\telem.addEventListener \"blur\", (e) ->\n\t\tsetTimeout((() -> ul.style.visibility = 'hidden'), 100)\n\nupdateTags = (form, tag, list) ->\n\t# input to append the tags to\n\tel = form.querySelector '.ac_input'\n\tv = el.value\n\tif v.lastIndexOf(sep) > 0\n\t\tel.value = v[0..v.lastIndexOf(sep)-1] + \"#{sep}#{tag} #\"\n\telse\n\t\tel.value = \"#{sep}#{tag} #\"\n\tel.selectionStart = el.value.length\n\tel.focus()\n\tlist.style.visibility = 'hidden'\n\nupdateAutocompleteList = (list, txt, data, opts = {}) ->\n\tcount = 0\n\tsearchanchor = null\n\tprevent = false\n\tif opts?.search isnt off\n\t\tsearchanchor = (form, tag, list) ->\n\t\t\ta = window.createElementEx \"a\", {\n\t\t\t\thref: \"#\",\n\t\t\t\tclassName: \"noborder rightanchor\"\n\t\t\t}\n\t\t\ta.addEventListener \"click\", ->\n\t\t\t\tupdateTags form, tag, list\n\t\t\t\tprevent = true\n\t\t\t\tform = list.parentNode\n\t\t\t\tform.onsubmit() if form.onsubmit?\n\t\t\t\tform.submit()\n\t\t\ta.appendChild document.createTextNode \"search »\"\n\t\t\treturn a\n\n\tlist.removeChild list.firstChild while list.firstChild?\n\tfor el in data when el.trim().length > 0\n\t\tif el[0..txt.length-1] == txt and count++ < limit\n\t\t\tli = window.createElementEx \"li\", { title: el, style: { cursor: \"pointer\" } }\n\t\t\tdo (el) ->\n\t\t\t\tli.addEventListener \"click\", ->\n\t\t\t\t\treturn if prevent\n\t\t\t\t\tupdateTags list.parentNode, el, list\n\t\t\tspan = window.createElementEx \"span\"\n\t\t\tspan.appendChild document.createTextNode el\n\t\t\tli.appendChild span\n\t\t\tif searchanchor?\n\t\t\t\tli.appendChild searchanchor(list.parentNode, el, list)\n\t\t\tlist.appendChild li\n\n# Activate Autocomplete on every ac_input\nwindow.addEventListener 'load', ->\n\tfromList(document.querySelectorAll '.ac_input').map (e) ->\n\t\ttoggleAutocomplete e, \"#{window.crOpts.basepath}taglist\"\n\nwindow.AC =\n\ttoggleAutocomplete: toggleAutocomplete\n" ] }