diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 213d2ba6..0d61083f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -40,6 +40,10 @@ * Clear input #61 +### [@mcnocopo: Pachito Marco Calabrese](https://github.com/mcnocopo) + +* Add input name and a not-empty class #124 + ### [@mmBs](https://github.com/mmBs) * Add type attribute #96 diff --git a/README.md b/README.md index b7399488..399e1f31 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ var app = angular.module('app', ["angucomplete-alt"]); | description-field | The name of the field in the JSON objects returned back that should be used for displaying the description in the autocomplete list. [example](http://ghiden.github.io/angucomplete-alt/#example6) | No | twitterUsername | | image-field | The name of the field in the JSON objects returned back that should be used for displaying an image in the autocomplete list. [example](http://ghiden.github.io/angucomplete-alt/#example2) | No | pic | | minlength | The minimum length of string required before searching. [example](http://ghiden.github.io/angucomplete-alt/#example1). If set to 0, it shows all items. It works both local and remote but is intended to use with local data. If used with remote API, it needs to return all items when query parameter is empty string. | No | 3 | +| input-name | Name for input field | No | | | input-class | The classes to use for styling the input box. [example](http://ghiden.github.io/angucomplete-alt/#example1) | No | form-control | | match-class | If it is assigned, matching part of title is highlighted with given class style. [example](http://ghiden.github.io/angucomplete-alt/#example6) | No | highlight | | local-data | The local data variable to use from your controller. Should be an array of objects. [example](http://ghiden.github.io/angucomplete-alt/#example1) | No | countriesList | diff --git a/bower.json b/bower.json index 4696b15a..2fae4a5d 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angucomplete-alt", - "version": "0.0.39", + "version": "0.0.40", "homepage": "http://ghiden.github.io/angucomplete-alt/", "authors": [ "Hidenari Nozaki " diff --git a/dist/angucomplete-alt.min.js b/dist/angucomplete-alt.min.js index 73c5eaf4..13103731 100644 --- a/dist/angucomplete-alt.min.js +++ b/dist/angucomplete-alt.min.js @@ -1,2 +1,2 @@ /*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */ -"use strict";!function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b(require("angular")):"function"==typeof define&&define.amd?define(["angular"],b):b(a.angular)}(window,function(a){a.module("angucomplete-alt",[]).directive("angucompleteAlt",["$q","$parse","$http","$sce","$timeout","$templateCache",function(a,b,c,d,e,f){var g=40,h=39,i=38,j=37,k=27,l=13,m=9,n=3,o=524288,p=500,q=200,r="autocomplete-required",s="Searching...",t="No results found",u="/angucomplete-alt/index.html";return f.put(u,'
{{ result.title }}
{{result.description}}
'),{restrict:"EA",require:"^?form",scope:{selectedObject:"=",disableInput:"=",initialValue:"@",localData:"=",remoteUrlRequestFormatter:"=",remoteUrlRequestWithCredentials:"@",remoteUrlResponseFormatter:"=",remoteUrlErrorCallback:"=",id:"@",type:"@",placeholder:"@",remoteUrl:"@",remoteUrlDataField:"@",titleField:"@",descriptionField:"@",imageField:"@",inputClass:"@",pause:"@",searchFields:"@",minlength:"@",matchClass:"@",clearSelected:"@",overrideSuggestions:"@",fieldRequired:"@",fieldRequiredClass:"@",inputChanged:"=",autoMatch:"@",focusOut:"&",focusIn:"&"},templateUrl:function(a,b){return b.templateUrl||u},link:function(b,f,u,v){function w(a){return a.which?a.which:a.keyCode}function x(a){"function"==typeof b.selectedObject?b.selectedObject(a):b.selectedObject=a,D(a?!0:!1)}function y(a){return function(c){return b[a]?b[a](c):c}}function z(a){x({originalObject:a}),b.clearSelected&&(b.searchStr=null),R()}function A(a){return b.titleField.split(",").map(function(b){return B(a,b)}).join(" ")}function B(a,b){var c,d;return b?(c=b.split("."),d=a,c.forEach(function(a){d=d[a]})):d=a,d}function C(a,c){var e,f,g;return g=new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i"),a?(f=a.match(g),e=f?a.replace(g,''+f[0]+""):a,d.trustAsHtml(e)):void 0}function D(a){db=b.searchStr,b.fieldRequired&&v&&v.$setValidity(cb,a)}function E(a){var c=w(a);if(c!==j&&c!==h)if(c===i||c===l)a.preventDefault();else if(c===g)a.preventDefault(),!b.showDropdown&&b.searchStr&&b.searchStr.length>=ab&&(S(),b.searching=!0,V(b.searchStr));else if(c===k)R(),b.$apply(function(){_.val(b.searchStr)});else{if(0===ab&&!b.searchStr)return;b.searchStr&&""!==b.searchStr?b.searchStr.length>=ab&&(S(),bb&&e.cancel(bb),b.searching=!0,bb=e(function(){V(b.searchStr)},b.pause)):b.showDropdown=!1,db&&db!==b.searchStr&&!b.clearSelected&&x(void 0)}}function F(a){!b.overrideSuggestions||b.selectedObject&&b.selectedObject.originalObject===b.searchStr||(a&&a.preventDefault(),z(b.searchStr))}function G(a){var b=getComputedStyle(a);return a.offsetHeight+parseInt(b.marginTop,10)+parseInt(b.marginBottom,10)}function H(){return fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).maxHeight,10)}function I(){return f[0].querySelectorAll(".angucomplete-row")[b.currentIndex]}function J(){return I().getBoundingClientRect().top-(fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).paddingTop,10))}function K(a){fb.scrollTop=fb.scrollTop+a}function L(){var a=b.results[b.currentIndex];_.val(b.matchClass?A(a.originalObject):a.title)}function M(a){var c=w(a),d=null,e=null;c===l&&b.results?(b.currentIndex>=0&&b.currentIndex=1?(b.$apply(function(){b.currentIndex--,L()}),gb&&(e=J(),0>e&&K(e-1))):0===b.currentIndex&&b.$apply(function(){b.currentIndex=-1,_.val(b.searchStr)})):c===m&&(b.results&&b.results.length>0&&b.showDropdown?-1===b.currentIndex&&b.overrideSuggestions?F():(-1===b.currentIndex&&(b.currentIndex=0),b.selectResult(b.results[b.currentIndex]),b.$digest()):b.searchStr&&b.searchStr.length>0&&F())}function N(a){return function(c){b.searching=!1,W(B(Z(c),b.remoteUrlDataField),a)}}function O(a,c,d,e){0!==c&&(b.remoteUrlErrorCallback?b.remoteUrlErrorCallback(a,c,d,e):console&&console.error&&console.error("http error"))}function P(){eb&&eb.resolve()}function Q(d){var e={},f=b.remoteUrl+encodeURIComponent(d);b.remoteUrlRequestFormatter&&(e={params:b.remoteUrlRequestFormatter(d)},f=b.remoteUrl),b.remoteUrlRequestWithCredentials&&(e.withCredentials=!0),P(),eb=a.defer(),e.timeout=eb.promise,c.get(f,e).success(N(d)).error(O)}function R(){b.showDropdown=!1,b.results=[],fb&&(fb.scrollTop=0)}function S(){b.showDropdown=!0,b.currentIndex=-1,b.results=[]}function T(a){var c,d,e,f,g=b.searchFields.split(","),h=[];for(c=0;c=0;d&&(h[h.length]=b.localData[c])}b.searching=!1,W(h,a)}function U(a,c,d){for(var e in c)if(c[e].toLowerCase()===d.toLowerCase())return void b.selectResult(a)}function V(a){!a||a.length0)for(b.results=[],d=0;d0&&(b.searchStr=b.initialValue,D(!0),$())}),b.$on("angucomplete-alt:clearInput",function(a,c){c?b.id===c&&(b.searchStr=null,R()):(b.searchStr=null,R())}),b.onFocusHandler=function(){b.focusIn&&b.focusIn(),0!==ab||b.searchStr&&0!==b.searchStr.length||(b.showDropdown=!0,X())},b.hideResults=function(){hb===b.id+"_dropdown"?hb=null:(Y=e(function(){R(),b.$apply(function(){b.searchStr&&b.searchStr.length>0&&_.val(b.searchStr)})},q),P(),b.focusOut&&b.focusOut(),b.overrideSuggestions&&b.searchStr&&b.searchStr.length>0&&-1===b.currentIndex&&F())},b.resetHideResults=function(){Y&&e.cancel(Y)},b.hoverRow=function(a){b.currentIndex=a},b.selectResult=function(a){b.matchClass&&(a.title=A(a.originalObject),a.description=B(a.originalObject,b.descriptionField)),b.searchStr=b.clearSelected?null:a.title,x(a),R()},b.inputChangeHandler=function(a){return a.length
{{ result.title }}
{{result.description}}
'),{restrict:"EA",require:"^?form",scope:{selectedObject:"=",disableInput:"=",initialValue:"@",localData:"=",remoteUrlRequestFormatter:"=",remoteUrlRequestWithCredentials:"@",remoteUrlResponseFormatter:"=",remoteUrlErrorCallback:"=",id:"@",type:"@",placeholder:"@",remoteUrl:"@",remoteUrlDataField:"@",titleField:"@",descriptionField:"@",imageField:"@",inputClass:"@",pause:"@",searchFields:"@",minlength:"@",matchClass:"@",clearSelected:"@",overrideSuggestions:"@",fieldRequired:"@",fieldRequiredClass:"@",inputChanged:"=",autoMatch:"@",focusOut:"&",focusIn:"&",inputName:"@"},templateUrl:function(a,b){return b.templateUrl||u},link:function(b,f,u,v){function w(a){return a.which?a.which:a.keyCode}function x(a){"function"==typeof b.selectedObject?b.selectedObject(a):b.selectedObject=a,D(a?!0:!1)}function y(a){return function(c){return b[a]?b[a](c):c}}function z(a){x({originalObject:a}),b.clearSelected&&(b.searchStr=null),R()}function A(a){return b.titleField.split(",").map(function(b){return B(a,b)}).join(" ")}function B(a,b){var c,d;return b?(c=b.split("."),d=a,c.forEach(function(a){d=d[a]})):d=a,d}function C(a,c){var e,f,g;return g=new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i"),a?(f=a.match(g),e=f?a.replace(g,''+f[0]+""):a,d.trustAsHtml(e)):void 0}function D(a){b.notEmpty=a,db=b.searchStr,b.fieldRequired&&v&&v.$setValidity(cb,a)}function E(a){var c=w(a);if(c!==j&&c!==h)if(c===i||c===l)a.preventDefault();else if(c===g)a.preventDefault(),!b.showDropdown&&b.searchStr&&b.searchStr.length>=ab&&(S(),b.searching=!0,V(b.searchStr));else if(c===k)R(),b.$apply(function(){_.val(b.searchStr)});else{if(0===ab&&!b.searchStr)return;b.searchStr&&""!==b.searchStr?b.searchStr.length>=ab&&(S(),bb&&e.cancel(bb),b.searching=!0,bb=e(function(){V(b.searchStr)},b.pause)):b.showDropdown=!1,db&&db!==b.searchStr&&!b.clearSelected&&x(void 0)}}function F(a){!b.overrideSuggestions||b.selectedObject&&b.selectedObject.originalObject===b.searchStr||(a&&a.preventDefault(),z(b.searchStr))}function G(a){var b=getComputedStyle(a);return a.offsetHeight+parseInt(b.marginTop,10)+parseInt(b.marginBottom,10)}function H(){return fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).maxHeight,10)}function I(){return f[0].querySelectorAll(".angucomplete-row")[b.currentIndex]}function J(){return I().getBoundingClientRect().top-(fb.getBoundingClientRect().top+parseInt(getComputedStyle(fb).paddingTop,10))}function K(a){fb.scrollTop=fb.scrollTop+a}function L(){var a=b.results[b.currentIndex];_.val(b.matchClass?A(a.originalObject):a.title)}function M(a){var c=w(a),d=null,e=null;c===l&&b.results?(b.currentIndex>=0&&b.currentIndex=1?(b.$apply(function(){b.currentIndex--,L()}),gb&&(e=J(),0>e&&K(e-1))):0===b.currentIndex&&b.$apply(function(){b.currentIndex=-1,_.val(b.searchStr)})):c===m&&(b.results&&b.results.length>0&&b.showDropdown?-1===b.currentIndex&&b.overrideSuggestions?F():(-1===b.currentIndex&&(b.currentIndex=0),b.selectResult(b.results[b.currentIndex]),b.$digest()):b.searchStr&&b.searchStr.length>0&&F())}function N(a){return function(c){b.searching=!1,W(B(Z(c),b.remoteUrlDataField),a)}}function O(a,c,d,e){0!==c&&(b.remoteUrlErrorCallback?b.remoteUrlErrorCallback(a,c,d,e):console&&console.error&&console.error("http error"))}function P(){eb&&eb.resolve()}function Q(d){var e={},f=b.remoteUrl+encodeURIComponent(d);b.remoteUrlRequestFormatter&&(e={params:b.remoteUrlRequestFormatter(d)},f=b.remoteUrl),b.remoteUrlRequestWithCredentials&&(e.withCredentials=!0),P(),eb=a.defer(),e.timeout=eb.promise,c.get(f,e).success(N(d)).error(O)}function R(){b.showDropdown=!1,b.results=[],fb&&(fb.scrollTop=0)}function S(){b.showDropdown=!0,b.currentIndex=-1,b.results=[]}function T(a){var c,d,e,f,g=b.searchFields.split(","),h=[];for(c=0;c=0;d&&(h[h.length]=b.localData[c])}b.searching=!1,W(h,a)}function U(a,c,d){for(var e in c)if(c[e].toLowerCase()===d.toLowerCase())return void b.selectResult(a)}function V(a){!a||a.length0)for(b.results=[],d=0;d0&&(b.searchStr=b.initialValue,D(!0),$())}),b.$on("angucomplete-alt:clearInput",function(a,c){c?b.id===c&&(b.searchStr=null,R()):(b.searchStr=null,R())}),b.onFocusHandler=function(){b.focusIn&&b.focusIn(),0!==ab||b.searchStr&&0!==b.searchStr.length||(b.showDropdown=!0,X())},b.hideResults=function(){hb===b.id+"_dropdown"?hb=null:(Y=e(function(){R(),b.$apply(function(){b.searchStr&&b.searchStr.length>0&&_.val(b.searchStr)})},q),P(),b.focusOut&&b.focusOut(),b.overrideSuggestions&&b.searchStr&&b.searchStr.length>0&&-1===b.currentIndex&&F())},b.resetHideResults=function(){Y&&e.cancel(Y)},b.hoverRow=function(a){b.currentIndex=a},b.selectResult=function(a){b.matchClass&&(a.title=A(a.originalObject),a.description=B(a.originalObject,b.descriptionField)),b.searchStr=b.clearSelected?null:a.title,x(a),R()},b.inputChangeHandler=function(a){return a.length