From 2d2f6a0f4f65c3c31e6e31e00a0f735ed8b48198 Mon Sep 17 00:00:00 2001 From: Hidenari Nozaki Date: Sat, 23 May 2015 22:21:53 +1200 Subject: [PATCH] Merge #124 --- CONTRIBUTORS.md | 4 ++++ README.md | 1 + bower.json | 2 +- dist/angucomplete-alt.min.js | 2 +- package.json | 2 +- 5 files changed, 8 insertions(+), 3 deletions(-) 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