forked from Siyfion/angular-typeahead
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-typeahead.min.js
More file actions
1 lines (1 loc) · 1.66 KB
/
Copy pathangular-typeahead.min.js
File metadata and controls
1 lines (1 loc) · 1.66 KB
1
angular.module("siyfion.sfTypeahead",[]).directive("sfTypeahead",function(){return{restrict:"AC",require:"?ngModel",scope:{options:"=",datasets:"=",suggestionKey:"@"},link:function(a,b,c,d){function e(a,b){var c=-1;return angular.forEach(a,function(a,d){angular.equals(b,a)&&(c=d)}),c>=0}function f(b,c){a.$apply(function(){var b=angular.isDefined(a.suggestionKey)?c[a.suggestionKey]:c;d.$setViewValue(b)})}var g=a.options||{},h=(angular.isArray(a.datasets)?a.datasets:[a.datasets])||[];if(b[0]&&"LABEL"==b[0].parentElement.tagName){var i=b[0].parentElement;$(i).on("click",function(a){var b=$(a.currentTarget).find("input");b.length>1&&setTimeout(function(){b.last().focus()},0)})}b.typeahead(a.options,a.datasets),d.$parsers.push(function(a){var b=angular.isObject(a);return g.editable===!1?(d.$setValidity("typeahead",b),b?a:void 0):a}),d.$formatters.push(function(c){if(angular.isObject(c)){var f=!1;return $.each(h,function(i,j){function k(j){var k=e(j,c);k?(d.$setViewValue(c),f=!0):d.$setViewValue(g.editable===!1?void 0:c),(f||i===h.length-1)&&setTimeout(function(){a.$apply(function(){b.typeahead("val",n)})},0)}var l=j.source,m=j.displayKey||"value",n=(angular.isFunction(m)?m(c):c[m])||"";return f?!1:n?void l(n,k):void k([])}),""}return null==c&&b.typeahead("val",null),c}),b.bind("typeahead:selected",function(b,c,d){f(b,c,d),a.$emit("typeahead:selected",c,d)}),b.bind("typeahead:autocompleted",function(b,c,d){f(b,c,d),a.$emit("typeahead:autocompleted",c,d)}),b.bind("typeahead:opened",function(){a.$emit("typeahead:opened")}),b.bind("typeahead:closed",function(){a.$emit("typeahead:closed")}),b.bind("typeahead:cursorchanged",function(b,c,d){a.$emit("typeahead:cursorchanged",b,c,d)})}}});