This repository was archived by the owner on May 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-dropdownsearch.min.js
More file actions
1 lines (1 loc) · 2.5 KB
/
angular-dropdownsearch.min.js
File metadata and controls
1 lines (1 loc) · 2.5 KB
1
"use strict";angular.module("angular-dropdownsearch",[]).directive("ilnDropDownSearch",["$document","$rootScope","$timeout",function(t,e,l){return{restrict:"E",scope:{results:"=",title:"=",formval:"="},link:function(e,i){var r=!1,s=0;e.title=null,e.formval=null,e.isPopupVisible=!1,e.activeclass="disabled",e.searchText="",e.currentSelected=null,e.$watch("results",function(){e.results?(r=!0,e.activeclass=""):(r=!1,e.activeclass="disabled")}),e.hoverItem=function(t){s=Number(t+1),e.currentSelected=Number(t)},e.isActiveItem=function(t){return String(t)===String(e.currentSelected)?"result-list-item-active":""},e.selectItem=function(t){e.currentSelected=t-1,e.$apply()},e.updateInput=function(){var t=angular.element(i[0].querySelector(".result-list-item-active"))[0];e.title=String(t.attributes["data-dropdown-result"].value),e.formval=String(t.attributes["data-dropdown-result-slug"].value),e.$apply()},e.toggleSelect=function(){return r?(s=0,e.currentSelected=null,e.isPopupVisible=!e.isPopupVisible,void(e.isPopupVisible&&l(function(){i.find("input")[0].focus()}))):!1},t.bind("keydown",function(t){if(!r||!e.isPopupVisible)return!1;var l=0;switch(i[0].querySelector(".result-list-item")&&(l=angular.element(i[0].querySelector(".result-list-item"))[0].attributes["data-length"].value),t.which){case 38:t.preventDefault(),s--,0>=s&&(s=l),e.selectItem(s);break;case 40:t.preventDefault(),s++,s>l&&(s=1),e.selectItem(s);break;case 13:t.preventDefault(),e.updateInput(),e.$apply(function(){e.isPopupVisible=!1});break;default:return}}),t.bind("click",function(t){if(!r)return!1;var l=i[0].contains(t.target);return l?void(t.target.attributes["data-dropdown-result"]&&e.$apply(function(){e.title=String(t.target.attributes["data-dropdown-result"].value),e.formval=String(t.target.attributes["data-dropdown-result-slug"].value),e.isPopupVisible=!1})):void e.$apply(function(){e.isPopupVisible=!1})})},template:'<div class="search-dropdown-result" ng-click="toggleSelect()" ng-class="activeclass"><p>{{ title }} <span class="pull-right">▼</span></p></div><div class="search-dropdown-wrap" ng-show="isPopupVisible"><div class="input-wrap"><input type="text" ng-model="searchText"/></div><ul class="result-list"><li ng-repeat="result in resultList = ( results | filter:searchText )"class="result-list-item"ng-class="isActiveItem( $index )"ng-mouseover="hoverItem( $index )"data-dropdown-result-slug="{{ result.slug }}"data-dropdown-result="{{ result.title }}"data-index="{{ $index }}"data-length="{{ resultList.length }}">{{ result.title }}</li></ul></div>'}}]);