JSFiddle - React, Tailwind, and code Playground
by Slava P
HTML
<script src="https://code.angularjs.org/1.5.0/angular.min.js"></script>
<div angucomplete-alt id="ex1"
placeholder="Search countries"
maxlength="50"
pause="100"
selected-object="selectedCountry"
local-data="countries"
search-fields="name"
title-field="name"
minlength="1"
input-class="form-control form-control-small"
match-class="highlight"></div>
CSS
.angucomplete-holder {
position: relative;
}
.angucomplete-dropdown {
border-color: #ececec;
border-width: 1px;
border-style: solid;
border-radius: 2px;
width: 250px;
padding: 6px;
cursor: pointer;
z-index: 9999;
position: absolute;
/*top: 32px;
left: 0px;
*/
margin-top: -6px;
background-color: #ffffff;
}
.angucomplete-searching {
color: #acacac;
font-size: 14px;
}
.angucomplete-description {
font-size: 14px;
}
.angucomplete-row {
padding: 5px;
color: #000000;
margin-bottom: 4px;
clear: both;
}
.angucomplete-selected-row {
background-color: lightblue;
color: #ffffff;
}
.angucomplete-image-holder {
padding-top: 2px;
float: left;
margin-right: 10px;
margin-left: 5px;
}
.angucomplete-image {
height: 34px;
width: 34px;
border-radius: 50%;
border-color: #ececec;
border-style: solid;
border-width: 1px;
}
.angucomplete-image-default {
/* Add your own default image here
background-image: url('/assets/default.png');
*/
background-position: center;
background-size: contain;
height: 34px;
width: 34px;
}
JavaScript
/*
* angucomplete-alt
* Autocomplete directive for AngularJS
* This is a fork of Daryl Rowland's angucomplete with some extra features.
* By Hidenari Nozaki
*/
/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */
(function (root, factory) {
'use strict';
if (typeof module !== 'undefined' && module.exports) {
// CommonJS
module.exports = factory(require('angular'));
} else if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], factory);
} else {
// Global Variables
factory(root.angular);
}
}(window, function (angular) {
'use strict';
angular.module('angucomplete-alt', []).directive('angucompleteAlt', ['$q', '$parse', '$http', '$sce', '$timeout', '$templateCache', '$interpolate', function ($q, $parse, $http, $sce, $timeout, $templateCache, $interpolate) {
// keyboard events
var KEY_DW = 40;
var KEY_RT = 39;
var KEY_UP = 38;
var KEY_LF = 37;
var KEY_ES = 27;
var KEY_EN = 13;
var KEY_TAB = 9;
var MIN_LENGTH = 3;
var MAX_LENGTH = 524288; // the default max length per the html maxlength attribute
var PAUSE = 500;
var BLUR_TIMEOUT = 200;
// string constants
var REQUIRED_CLASS = 'autocomplete-required';
var TEXT_SEARCHING = 'Searching...';
var TEXT_NORESULTS = 'No results found';
var TEMPLATE_URL = '/angucomplete-alt/index.html';
// Set the default template for this directive
$templateCache.put(TEMPLATE_URL,
'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">' +
' <input id="{{id}}_value" name="{{inputName}}" tabindex="{{fieldTabindex}}" ng-class="{\'angucomplete-input-not-empty\': notEmpty}" ng-model="searchStr" ng-disabled="disableInput" type="{{inputType}}" placeholder="{{placeholder}}" maxlength="{{maxlength}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()"...