diff --git a/dist/autocomplete.js b/dist/autocomplete.js index cf1f974..fad6e1c 100644 --- a/dist/autocomplete.js +++ b/dist/autocomplete.js @@ -25,7 +25,7 @@ var EventType; * @class * @author Baptiste Donaux @baptistedonaux */ -var AutoComplete = (function () { +var AutoComplete = /** @class */ (function () { // Constructor function AutoComplete(params, selector) { if (params === void 0) { params = {}; } @@ -284,6 +284,9 @@ var AutoComplete = (function () { this._Open(); }.bind(this)); } + else { + this._Close(); + } }, Operator: ConditionOperator.AND, Event: EventType.KEYUP @@ -367,7 +370,7 @@ var AutoComplete = (function () { _Blur: function (now) { if (now === void 0) { now = false; } if (now) { - this.DOMResults.setAttribute("class", "autocomplete"); + this._Close(); } else { var params = this; @@ -404,6 +407,9 @@ var AutoComplete = (function () { } }); }, + _Close: function () { + this.DOMResults.setAttribute("class", "autocomplete"); + }, /** * Position the results HTML element */ diff --git a/dist/autocomplete.min.js b/dist/autocomplete.min.js index deccb50..4918e68 100644 --- a/dist/autocomplete.min.js +++ b/dist/autocomplete.min.js @@ -9,6 +9,6 @@ */ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=e.From&&o.keyCode<=e.To?!e.Not:e.Not))};for(var i in t.prototype.getEventsByType(e,n)){var s=t.merge({Operator:ConditionOperator.AND},e.KeyboardMappings[i]),a=ConditionOperator.AND==s.Operator;s.Conditions.forEach(r),!0===a&&s.Callback.call(e,o)}},t.prototype.makeRequest=function(t,e){var n=Object.getOwnPropertyNames(t.HttpHeaders),o=new XMLHttpRequest,r=t._HttpMethod(),i=t._Url(),s=t._Pre(),a=encodeURIComponent(t._QueryArg())+"="+encodeURIComponent(s);r.match(/^GET$/i)&&(-1!==i.indexOf("?")?i+="&"+a:i+="?"+a),o.open(r,i,!0);for(var u=n.length-1;u>=0;u--)o.setRequestHeader(n[u],t.HttpHeaders[n[u]]);return o.onreadystatechange=function(){4==o.readyState&&200==o.status&&(t.$Cache[s]=o.response,e(o.response))},o},t.prototype.ajax=function(e,n,o){void 0===o&&(o=!0),e.$AjaxTimer&&window.clearTimeout(e.$AjaxTimer),!0===o?e.$AjaxTimer=window.setTimeout(t.prototype.ajax.bind(null,e,n,!1),e.Delay):(e.Request&&e.Request.abort(),e.Request=n,e.Request.send(e._QueryArg()+"="+e._Pre()))},t.prototype.cache=function(e,n){var o=e._Cache(e._Pre());if(void 0===o){var r=t.prototype.makeRequest(e,n);t.prototype.ajax(e,r)}else n(o)},t.prototype.destroy=function(t){for(var e in t.$Listeners)t.Input.removeEventListener(e,t.$Listeners[e]);t.DOMResults.parentNode.removeChild(t.DOMResults)},t.merge=function(){for(var t,e={},n=0;n"+t+""}},HttpHeaders:{"Content-type":"application/x-www-form-urlencoded"},Limit:0,MinChars:0,HttpMethod:"GET",QueryArg:"q",Url:null,KeyboardMappings:{Enter:{Conditions:[{Is:13,Not:!1}],Callback:function(t){if(-1!=this.DOMResults.getAttribute("class").indexOf("open")){t.preventDefault();var e=this.DOMResults.querySelector("li.active");null!==e&&(this._Select(e),this.DOMResults.setAttribute("class","autocomplete"))}},Operator:ConditionOperator.AND,Event:EventType.KEYDOWN},KeyUpAndDown_down:{Conditions:[{Is:38,Not:!1},{Is:40,Not:!1}],Callback:function(t){t.preventDefault()},Operator:ConditionOperator.OR,Event:EventType.KEYDOWN},KeyUpAndDown_up:{Conditions:[{Is:38,Not:!1},{Is:40,Not:!1}],Callback:function(t){t.preventDefault();var e=this.DOMResults.querySelector("li:first-child:not(.locked)"),n=this.DOMResults.querySelector("li:last-child:not(.locked)"),o=this.DOMResults.querySelector("li.active");if(o){var r=Array.prototype.indexOf.call(o.parentNode.children,o),i=r+(t.keyCode-39),s=this.DOMResults.getElementsByTagName("li").length;i<0?i=s-1:i>=s&&(i=0),o.classList.remove("active"),o.parentElement.children.item(i).classList.add("active")}else n&&38==t.keyCode?n.classList.add("active"):e&&e.classList.add("active")},Operator:ConditionOperator.OR,Event:EventType.KEYUP},AlphaNum:{Conditions:[{Is:13,Not:!0},{From:35,To:40,Not:!0}],Callback:function(){var e=this.Input.getAttribute("data-autocomplete-old-value"),n=this._Pre();""!==n&&n.length>=this._MinChars()&&(e&&n==e||this.DOMResults.setAttribute("class","autocomplete open"),t.prototype.cache(this,function(t){this._Render(this._Post(t)),this._Open()}.bind(this)))},Operator:ConditionOperator.AND,Event:EventType.KEYUP}},DOMResults:null,Request:null,Input:null,_EmptyMessage:function(){return this.Input.hasAttribute("data-autocomplete-empty-message")?this.Input.getAttribute("data-autocomplete-empty-message"):!1!==this.EmptyMessage?this.EmptyMessage:""},_Limit:function(){var t=this.Input.getAttribute("data-autocomplete-limit");return isNaN(t)||null===t?this.Limit:parseInt(t,10)},_MinChars:function(){var t=this.Input.getAttribute("data-autocomplete-minchars");return isNaN(t)||null===t?this.MinChars:parseInt(t,10)},_Highlight:function(t){return t.replace(this.Highlight.getRegex(this._Pre()),this.Highlight.transform)},_HttpMethod:function(){return this.Input.hasAttribute("data-autocomplete-method")?this.Input.getAttribute("data-autocomplete-method"):this.HttpMethod},_QueryArg:function(){return this.Input.hasAttribute("data-autocomplete-param-name")?this.Input.getAttribute("data-autocomplete-param-name"):this.QueryArg},_Url:function(){return this.Input.hasAttribute("data-autocomplete")?this.Input.getAttribute("data-autocomplete"):this.Url},_Blur:function(t){if(void 0===t&&(t=!1),t)this.DOMResults.setAttribute("class","autocomplete");else{var e=this;setTimeout(function(){e._Blur(!0)},150)}},_Cache:function(t){return this.$Cache[t]},_Focus:function(){var t=this.Input.getAttribute("data-autocomplete-old-value");(!t||this.Input.value!=t)&&this._MinChars()<=this.Input.value.length&&this.DOMResults.setAttribute("class","autocomplete open")},_Open:function(){var t=this;Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"),function(e){"locked"!=e.getAttribute("class")&&(e.onclick=function(){t._Select(e)})})},_Position:function(){this.DOMResults.setAttribute("class","autocomplete"),this.DOMResults.setAttribute("style","top:"+(this.Input.offsetTop+this.Input.offsetHeight)+"px;left:"+this.Input.offsetLeft+"px;width:"+this.Input.clientWidth+"px;")},_Render:function(t){var e;e="string"==typeof t?this._RenderRaw(t):this._RenderResponseItems(t),this.DOMResults.hasChildNodes()&&this.DOMResults.removeChild(this.DOMResults.childNodes[0]),this.DOMResults.appendChild(e)},_RenderResponseItems:function(t){var e=document.createElement("ul"),n=document.createElement("li"),o=this._Limit();o<0?t=t.reverse():0===o&&(o=t.length);for(var r=0;r0)this.DOMResults.innerHTML=t;else{var o=this._EmptyMessage();""!==o&&(n.innerHTML=o,n.setAttribute("class","locked"),e.appendChild(n))}return e},_Post:function(t){try{var e=[],n=JSON.parse(t);if(0===Object.keys(n).length)return"";if(Array.isArray(n))for(var o=0;o=e.From&&o.keyCode<=e.To?!e.Not:e.Not))};for(var i in t.prototype.getEventsByType(e,n)){var s=t.merge({Operator:ConditionOperator.AND},e.KeyboardMappings[i]),a=ConditionOperator.AND==s.Operator;s.Conditions.forEach(r),!0===a&&s.Callback.call(e,o)}},t.prototype.makeRequest=function(t,e){var n=Object.getOwnPropertyNames(t.HttpHeaders),o=new XMLHttpRequest,r=t._HttpMethod(),i=t._Url(),s=t._Pre(),a=encodeURIComponent(t._QueryArg())+"="+encodeURIComponent(s);r.match(/^GET$/i)&&(-1!==i.indexOf("?")?i+="&"+a:i+="?"+a),o.open(r,i,!0);for(var u=n.length-1;u>=0;u--)o.setRequestHeader(n[u],t.HttpHeaders[n[u]]);return o.onreadystatechange=function(){4==o.readyState&&200==o.status&&(t.$Cache[s]=o.response,e(o.response))},o},t.prototype.ajax=function(e,n,o){void 0===o&&(o=!0),e.$AjaxTimer&&window.clearTimeout(e.$AjaxTimer),!0===o?e.$AjaxTimer=window.setTimeout(t.prototype.ajax.bind(null,e,n,!1),e.Delay):(e.Request&&e.Request.abort(),e.Request=n,e.Request.send(e._QueryArg()+"="+e._Pre()))},t.prototype.cache=function(e,n){var o=e._Cache(e._Pre());if(void 0===o){var r=t.prototype.makeRequest(e,n);t.prototype.ajax(e,r)}else n(o)},t.prototype.destroy=function(t){for(var e in t.$Listeners)t.Input.removeEventListener(e,t.$Listeners[e]);t.DOMResults.parentNode.removeChild(t.DOMResults)},t.merge=function(){for(var t,e={},n=0;n"+t+""}},HttpHeaders:{"Content-type":"application/x-www-form-urlencoded"},Limit:0,MinChars:0,HttpMethod:"GET",QueryArg:"q",Url:null,KeyboardMappings:{Enter:{Conditions:[{Is:13,Not:!1}],Callback:function(t){if(-1!=this.DOMResults.getAttribute("class").indexOf("open")){t.preventDefault();var e=this.DOMResults.querySelector("li.active");null!==e&&(this._Select(e),this.DOMResults.setAttribute("class","autocomplete"))}},Operator:ConditionOperator.AND,Event:EventType.KEYDOWN},KeyUpAndDown_down:{Conditions:[{Is:38,Not:!1},{Is:40,Not:!1}],Callback:function(t){t.preventDefault()},Operator:ConditionOperator.OR,Event:EventType.KEYDOWN},KeyUpAndDown_up:{Conditions:[{Is:38,Not:!1},{Is:40,Not:!1}],Callback:function(t){t.preventDefault();var e=this.DOMResults.querySelector("li:first-child:not(.locked)"),n=this.DOMResults.querySelector("li:last-child:not(.locked)"),o=this.DOMResults.querySelector("li.active");if(o){var r=Array.prototype.indexOf.call(o.parentNode.children,o),i=r+(t.keyCode-39),s=this.DOMResults.getElementsByTagName("li").length;i<0?i=s-1:i>=s&&(i=0),o.classList.remove("active"),o.parentElement.children.item(i).classList.add("active")}else n&&38==t.keyCode?n.classList.add("active"):e&&e.classList.add("active")},Operator:ConditionOperator.OR,Event:EventType.KEYUP},AlphaNum:{Conditions:[{Is:13,Not:!0},{From:35,To:40,Not:!0}],Callback:function(){var e=this.Input.getAttribute("data-autocomplete-old-value"),n=this._Pre();""!==n&&n.length>=this._MinChars()?(e&&n==e||this.DOMResults.setAttribute("class","autocomplete open"),t.prototype.cache(this,function(t){this._Render(this._Post(t)),this._Open()}.bind(this))):this._Close()},Operator:ConditionOperator.AND,Event:EventType.KEYUP}},DOMResults:null,Request:null,Input:null,_EmptyMessage:function(){return this.Input.hasAttribute("data-autocomplete-empty-message")?this.Input.getAttribute("data-autocomplete-empty-message"):!1!==this.EmptyMessage?this.EmptyMessage:""},_Limit:function(){var t=this.Input.getAttribute("data-autocomplete-limit");return isNaN(t)||null===t?this.Limit:parseInt(t,10)},_MinChars:function(){var t=this.Input.getAttribute("data-autocomplete-minchars");return isNaN(t)||null===t?this.MinChars:parseInt(t,10)},_Highlight:function(t){return t.replace(this.Highlight.getRegex(this._Pre()),this.Highlight.transform)},_HttpMethod:function(){return this.Input.hasAttribute("data-autocomplete-method")?this.Input.getAttribute("data-autocomplete-method"):this.HttpMethod},_QueryArg:function(){return this.Input.hasAttribute("data-autocomplete-param-name")?this.Input.getAttribute("data-autocomplete-param-name"):this.QueryArg},_Url:function(){return this.Input.hasAttribute("data-autocomplete")?this.Input.getAttribute("data-autocomplete"):this.Url},_Blur:function(t){if(void 0===t&&(t=!1),t)this._Close();else{var e=this;setTimeout(function(){e._Blur(!0)},150)}},_Cache:function(t){return this.$Cache[t]},_Focus:function(){var t=this.Input.getAttribute("data-autocomplete-old-value");(!t||this.Input.value!=t)&&this._MinChars()<=this.Input.value.length&&this.DOMResults.setAttribute("class","autocomplete open")},_Open:function(){var t=this;Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"),function(e){"locked"!=e.getAttribute("class")&&(e.onclick=function(){t._Select(e)})})},_Close:function(){this.DOMResults.setAttribute("class","autocomplete")},_Position:function(){this.DOMResults.setAttribute("class","autocomplete"),this.DOMResults.setAttribute("style","top:"+(this.Input.offsetTop+this.Input.offsetHeight)+"px;left:"+this.Input.offsetLeft+"px;width:"+this.Input.clientWidth+"px;")},_Render:function(t){var e;e="string"==typeof t?this._RenderRaw(t):this._RenderResponseItems(t),this.DOMResults.hasChildNodes()&&this.DOMResults.removeChild(this.DOMResults.childNodes[0]),this.DOMResults.appendChild(e)},_RenderResponseItems:function(t){var e=document.createElement("ul"),n=document.createElement("li"),o=this._Limit();o<0?t=t.reverse():0===o&&(o=t.length);for(var r=0;r0)this.DOMResults.innerHTML=t;else{var o=this._EmptyMessage();""!==o&&(n.innerHTML=o,n.setAttribute("class","locked"),e.appendChild(n))}return e},_Post:function(t){try{var e=[],n=JSON.parse(t);if(0===Object.keys(n).length)return"";if(Array.isArray(n))for(var o=0;o