ng2-completer
Advanced tools
Comparing version 0.1.8 to 0.1.9
(function webpackUniversalModuleDefinition(root, factory) { | ||
if(typeof exports === 'object' && typeof module === 'object') | ||
module.exports = factory(require("@angular/core"), require("@angular/forms"), require("@angular/http"), require("rxjs/Observable"), require("rxjs/Subject"), require("rxjs/add/operator/catch"), require("rxjs/add/operator/map")); | ||
module.exports = factory(require("@angular/core"), require("@angular/forms"), require("@angular/http"), require("rxjs/add/operator/catch"), require("@angular/common"), require("rxjs/Observable"), require("rxjs/Subject"), require("rxjs/add/operator/map")); | ||
else if(typeof define === 'function' && define.amd) | ||
define("ng2-completer", ["@angular/core", "@angular/forms", "@angular/http", "rxjs/Observable", "rxjs/Subject", "rxjs/add/operator/catch", "rxjs/add/operator/map"], factory); | ||
define("ng2-completer", ["@angular/core", "@angular/forms", "@angular/http", "rxjs/add/operator/catch", "@angular/common", "rxjs/Observable", "rxjs/Subject", "rxjs/add/operator/map"], factory); | ||
else if(typeof exports === 'object') | ||
exports["ng2-completer"] = factory(require("@angular/core"), require("@angular/forms"), require("@angular/http"), require("rxjs/Observable"), require("rxjs/Subject"), require("rxjs/add/operator/catch"), require("rxjs/add/operator/map")); | ||
exports["ng2-completer"] = factory(require("@angular/core"), require("@angular/forms"), require("@angular/http"), require("rxjs/add/operator/catch"), require("@angular/common"), require("rxjs/Observable"), require("rxjs/Subject"), require("rxjs/add/operator/map")); | ||
else | ||
root["ng2-completer"] = factory(root["@angular/core"], root["@angular/forms"], root["@angular/http"], root["rxjs/Observable"], root["rxjs/Subject"], root["rxjs/add/operator/catch"], root["rxjs/add/operator/map"]); | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_15__, __WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__, __WEBPACK_EXTERNAL_MODULE_18__, __WEBPACK_EXTERNAL_MODULE_19__, __WEBPACK_EXTERNAL_MODULE_20__) { | ||
root["ng2-completer"] = factory(root["@angular/core"], root["@angular/forms"], root["@angular/http"], root["rxjs/add/operator/catch"], root["@angular/common"], root["rxjs/Observable"], root["rxjs/Subject"], root["rxjs/add/operator/map"]); | ||
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_19__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_21__, __WEBPACK_EXTERNAL_MODULE_22__) { | ||
return /******/ (function(modules) { // webpackBootstrap | ||
@@ -58,7 +58,5 @@ /******/ // The module cache | ||
"use strict"; | ||
var completer_cmp_1 = __webpack_require__(6); | ||
exports.CompleterCmp = completer_cmp_1.CompleterCmp; | ||
var completer_data_factory_1 = __webpack_require__(9); | ||
exports.COMPLETER_DATA_PROVIDERS = completer_data_factory_1.COMPLETER_DATA_PROVIDERS; | ||
var completer_service_1 = __webpack_require__(5); | ||
var ng2_completer_module_1 = __webpack_require__(13); | ||
exports.Ng2CompleterModule = ng2_completer_module_1.Ng2CompleterModule; | ||
var completer_service_1 = __webpack_require__(6); | ||
exports.CompleterService = completer_service_1.CompleterService; | ||
@@ -89,3 +87,3 @@ var local_data_1 = __webpack_require__(3); | ||
}; | ||
var Subject_1 = __webpack_require__(18); | ||
var Subject_1 = __webpack_require__(21); | ||
var CompleterBaseData = (function (_super) { | ||
@@ -261,3 +259,4 @@ __extends(CompleterBaseData, _super); | ||
}; | ||
__webpack_require__(20); | ||
__webpack_require__(22); | ||
__webpack_require__(9); | ||
var completer_base_data_1 = __webpack_require__(2); | ||
@@ -334,2 +333,129 @@ var RemoteData = (function (_super) { | ||
}; | ||
var core_1 = __webpack_require__(1); | ||
var template = __webpack_require__(17); | ||
var defaultStyles = __webpack_require__(16); | ||
var CompleterListCmp = (function () { | ||
function CompleterListCmp(listElm) { | ||
this.listElm = listElm; | ||
this.results = []; | ||
this.searchStr = ""; | ||
this.selected = new core_1.EventEmitter(); | ||
this.currentIndex = -1; | ||
this.isScrollOn = false; | ||
} | ||
CompleterListCmp.prototype.ngAfterContentInit = function () { | ||
this.dd = this.listElm.nativeElement.querySelector(".completer-dropdown"); | ||
var css = getComputedStyle(this.dd); | ||
this.isScrollOn = css.maxHeight && css.overflowY === "auto"; | ||
}; | ||
CompleterListCmp.prototype.onClick = function (result) { | ||
this.selected.emit(result); | ||
}; | ||
CompleterListCmp.prototype.hoverRow = function (index) { | ||
this.currentIndex = index; | ||
}; | ||
; | ||
CompleterListCmp.prototype.incIndex = function () { | ||
this.currentIndex++; | ||
if (this.isScrollOn) { | ||
var row = this.dropdownRow(); | ||
if (this.dropdownHeight() < row.getBoundingClientRect().bottom) { | ||
this.dropdownScrollTopTo(this.dropdownRowOffsetHeight(row)); | ||
} | ||
} | ||
}; | ||
CompleterListCmp.prototype.decIndex = function () { | ||
this.currentIndex--; | ||
if (this.isScrollOn) { | ||
var rowTop = this.dropdownRowTop(); | ||
if (rowTop < 0) { | ||
this.dropdownScrollTopTo(rowTop - 1); | ||
} | ||
} | ||
}; | ||
CompleterListCmp.prototype.unselect = function () { | ||
this.currentIndex = -1; | ||
}; | ||
CompleterListCmp.prototype.toTop = function () { | ||
this.currentIndex = 0; | ||
}; | ||
CompleterListCmp.prototype.dropdownRow = function () { | ||
return this.listElm.nativeElement.querySelectorAll(".completer-row")[this.currentIndex]; | ||
}; | ||
CompleterListCmp.prototype.dropdownHeight = function () { | ||
return this.dd.getBoundingClientRect().top + | ||
parseInt(getComputedStyle(this.dd).maxHeight, 10); | ||
}; | ||
CompleterListCmp.prototype.dropdownScrollTopTo = function (offset) { | ||
this.dd.scrollTop = this.dd.scrollTop + offset; | ||
}; | ||
CompleterListCmp.prototype.dropdownRowOffsetHeight = function (row) { | ||
var css = getComputedStyle(row); | ||
return row.offsetHeight + | ||
parseInt(css.marginTop, 10) + parseInt(css.marginBottom, 10); | ||
}; | ||
CompleterListCmp.prototype.dropdownRowTop = function () { | ||
return this.dropdownRow().getBoundingClientRect().top - | ||
(this.dd.getBoundingClientRect().top + | ||
parseInt(getComputedStyle(this.dd).paddingTop, 10)); | ||
}; | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Array) | ||
], CompleterListCmp.prototype, "results", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "matchClass", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Object) | ||
], CompleterListCmp.prototype, "searchStr", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "textSearching", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Boolean) | ||
], CompleterListCmp.prototype, "searching", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "textNoResults", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Boolean) | ||
], CompleterListCmp.prototype, "displaySearching", void 0); | ||
__decorate([ | ||
core_1.Output(), | ||
__metadata('design:type', Object) | ||
], CompleterListCmp.prototype, "selected", void 0); | ||
CompleterListCmp = __decorate([ | ||
core_1.Component({ | ||
selector: "completer-list", | ||
template: template, | ||
styles: [defaultStyles] | ||
}), | ||
__metadata('design:paramtypes', [core_1.ElementRef]) | ||
], CompleterListCmp); | ||
return CompleterListCmp; | ||
}()); | ||
exports.CompleterListCmp = CompleterListCmp; | ||
/***/ }, | ||
/* 6 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||
return c > 3 && r && Object.defineProperty(target, key, r), r; | ||
}; | ||
var __metadata = (this && this.__metadata) || function (k, v) { | ||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); | ||
}; | ||
var __param = (this && this.__param) || function (paramIndex, decorator) { | ||
@@ -372,3 +498,21 @@ return function (target, key) { decorator(target, key, paramIndex); } | ||
/***/ }, | ||
/* 6 */ | ||
/* 7 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("@angular/forms"); | ||
/***/ }, | ||
/* 8 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("@angular/http"); | ||
/***/ }, | ||
/* 9 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("rxjs/add/operator/catch"); | ||
/***/ }, | ||
/* 10 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -387,8 +531,8 @@ | ||
var core_1 = __webpack_require__(1); | ||
var forms_1 = __webpack_require__(15); | ||
var Observable_1 = __webpack_require__(17); | ||
var completer_list_cmp_1 = __webpack_require__(7); | ||
__webpack_require__(19); | ||
var template = __webpack_require__(11); | ||
var defaultStyles = __webpack_require__(10); | ||
var forms_1 = __webpack_require__(7); | ||
var Observable_1 = __webpack_require__(20); | ||
var completer_list_cmp_1 = __webpack_require__(5); | ||
__webpack_require__(9); | ||
var template = __webpack_require__(15); | ||
var defaultStyles = __webpack_require__(14); | ||
// keyboard events | ||
@@ -409,6 +553,7 @@ var KEY_DW = 40; | ||
var noop = function () { }; | ||
var COMPLETER_CONTROL_VALUE_ACCESSOR = new core_1.Provider(forms_1.NG_VALUE_ACCESSOR, { | ||
var COMPLETER_CONTROL_VALUE_ACCESSOR = { | ||
provide: forms_1.NG_VALUE_ACCESSOR, | ||
useExisting: core_1.forwardRef(function () { return CompleterCmp; }), | ||
multi: true | ||
}); | ||
}; | ||
var CompleterCmp = (function () { | ||
@@ -748,3 +893,2 @@ function CompleterCmp() { | ||
selector: "ng2-completer", | ||
directives: [completer_list_cmp_1.CompleterListCmp], | ||
template: template, | ||
@@ -762,3 +906,3 @@ styles: [defaultStyles], | ||
/***/ }, | ||
/* 7 */ | ||
/* 11 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
@@ -777,132 +921,3 @@ | ||
var core_1 = __webpack_require__(1); | ||
var completer_list_item_cmp_1 = __webpack_require__(8); | ||
var template = __webpack_require__(13); | ||
var defaultStyles = __webpack_require__(12); | ||
var CompleterListCmp = (function () { | ||
function CompleterListCmp(listElm) { | ||
this.listElm = listElm; | ||
this.results = []; | ||
this.searchStr = ""; | ||
this.selected = new core_1.EventEmitter(); | ||
this.currentIndex = -1; | ||
this.isScrollOn = false; | ||
} | ||
CompleterListCmp.prototype.ngAfterContentInit = function () { | ||
this.dd = this.listElm.nativeElement.querySelector(".completer-dropdown"); | ||
var css = getComputedStyle(this.dd); | ||
this.isScrollOn = css.maxHeight && css.overflowY === "auto"; | ||
}; | ||
CompleterListCmp.prototype.onClick = function (result) { | ||
this.selected.emit(result); | ||
}; | ||
CompleterListCmp.prototype.hoverRow = function (index) { | ||
this.currentIndex = index; | ||
}; | ||
; | ||
CompleterListCmp.prototype.incIndex = function () { | ||
this.currentIndex++; | ||
if (this.isScrollOn) { | ||
var row = this.dropdownRow(); | ||
if (this.dropdownHeight() < row.getBoundingClientRect().bottom) { | ||
this.dropdownScrollTopTo(this.dropdownRowOffsetHeight(row)); | ||
} | ||
} | ||
}; | ||
CompleterListCmp.prototype.decIndex = function () { | ||
this.currentIndex--; | ||
if (this.isScrollOn) { | ||
var rowTop = this.dropdownRowTop(); | ||
if (rowTop < 0) { | ||
this.dropdownScrollTopTo(rowTop - 1); | ||
} | ||
} | ||
}; | ||
CompleterListCmp.prototype.unselect = function () { | ||
this.currentIndex = -1; | ||
}; | ||
CompleterListCmp.prototype.toTop = function () { | ||
this.currentIndex = 0; | ||
}; | ||
CompleterListCmp.prototype.dropdownRow = function () { | ||
return this.listElm.nativeElement.querySelectorAll(".completer-row")[this.currentIndex]; | ||
}; | ||
CompleterListCmp.prototype.dropdownHeight = function () { | ||
return this.dd.getBoundingClientRect().top + | ||
parseInt(getComputedStyle(this.dd).maxHeight, 10); | ||
}; | ||
CompleterListCmp.prototype.dropdownScrollTopTo = function (offset) { | ||
this.dd.scrollTop = this.dd.scrollTop + offset; | ||
}; | ||
CompleterListCmp.prototype.dropdownRowOffsetHeight = function (row) { | ||
var css = getComputedStyle(row); | ||
return row.offsetHeight + | ||
parseInt(css.marginTop, 10) + parseInt(css.marginBottom, 10); | ||
}; | ||
CompleterListCmp.prototype.dropdownRowTop = function () { | ||
return this.dropdownRow().getBoundingClientRect().top - | ||
(this.dd.getBoundingClientRect().top + | ||
parseInt(getComputedStyle(this.dd).paddingTop, 10)); | ||
}; | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Array) | ||
], CompleterListCmp.prototype, "results", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "matchClass", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Object) | ||
], CompleterListCmp.prototype, "searchStr", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "textSearching", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Boolean) | ||
], CompleterListCmp.prototype, "searching", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', String) | ||
], CompleterListCmp.prototype, "textNoResults", void 0); | ||
__decorate([ | ||
core_1.Input(), | ||
__metadata('design:type', Boolean) | ||
], CompleterListCmp.prototype, "displaySearching", void 0); | ||
__decorate([ | ||
core_1.Output(), | ||
__metadata('design:type', Object) | ||
], CompleterListCmp.prototype, "selected", void 0); | ||
CompleterListCmp = __decorate([ | ||
core_1.Component({ | ||
selector: "completer-list", | ||
template: template, | ||
styles: [defaultStyles], | ||
directives: [completer_list_item_cmp_1.CompleterListItemCmp] | ||
}), | ||
__metadata('design:paramtypes', [core_1.ElementRef]) | ||
], CompleterListCmp); | ||
return CompleterListCmp; | ||
}()); | ||
exports.CompleterListCmp = CompleterListCmp; | ||
/***/ }, | ||
/* 8 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||
return c > 3 && r && Object.defineProperty(target, key, r), r; | ||
}; | ||
var __metadata = (this && this.__metadata) || function (k, v) { | ||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); | ||
}; | ||
var core_1 = __webpack_require__(1); | ||
var template = __webpack_require__(14); | ||
var template = __webpack_require__(18); | ||
var CompleterListItemCmp = (function () { | ||
@@ -963,11 +978,9 @@ function CompleterListItemCmp() { | ||
/***/ }, | ||
/* 9 */ | ||
/* 12 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var core_1 = __webpack_require__(1); | ||
var http_1 = __webpack_require__(16); | ||
var http_1 = __webpack_require__(8); | ||
var local_data_1 = __webpack_require__(3); | ||
var remote_data_1 = __webpack_require__(4); | ||
var completer_service_1 = __webpack_require__(5); | ||
function localDataFactory() { | ||
@@ -985,11 +998,63 @@ return function () { | ||
exports.remoteDataFactory = remoteDataFactory; | ||
exports.COMPLETER_DATA_PROVIDERS = [ | ||
core_1.provide(local_data_1.LocalData, { useFactory: localDataFactory }), | ||
core_1.provide(remote_data_1.RemoteData, { useFactory: remoteDataFactory, deps: [http_1.Http] }), | ||
core_1.provide(completer_service_1.CompleterService, { useClass: completer_service_1.CompleterService }) | ||
]; | ||
exports.LocalDataFactoryProvider = { provide: local_data_1.LocalData, useFactory: localDataFactory }; | ||
exports.RemoteDataFactoryProvider = { provide: remote_data_1.RemoteData, useFactory: remoteDataFactory, deps: [http_1.Http] }; | ||
/***/ }, | ||
/* 10 */ | ||
/* 13 */ | ||
/***/ function(module, exports, __webpack_require__) { | ||
"use strict"; | ||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||
return c > 3 && r && Object.defineProperty(target, key, r), r; | ||
}; | ||
var __metadata = (this && this.__metadata) || function (k, v) { | ||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); | ||
}; | ||
var core_1 = __webpack_require__(1); | ||
var forms_1 = __webpack_require__(7); | ||
var http_1 = __webpack_require__(8); | ||
var completer_cmp_1 = __webpack_require__(10); | ||
var completer_list_cmp_1 = __webpack_require__(5); | ||
var completer_list_item_cmp_1 = __webpack_require__(11); | ||
var completer_service_1 = __webpack_require__(6); | ||
var completer_data_factory_1 = __webpack_require__(12); | ||
var common_1 = __webpack_require__(19); | ||
var Ng2CompleterModule = (function () { | ||
function Ng2CompleterModule() { | ||
} | ||
Ng2CompleterModule = __decorate([ | ||
core_1.NgModule({ | ||
imports: [ | ||
common_1.CommonModule, | ||
forms_1.FormsModule, | ||
forms_1.ReactiveFormsModule, | ||
http_1.HttpModule | ||
], | ||
declarations: [ | ||
completer_cmp_1.CompleterCmp, | ||
completer_list_cmp_1.CompleterListCmp, | ||
completer_list_item_cmp_1.CompleterListItemCmp | ||
], | ||
providers: [ | ||
completer_service_1.CompleterService, | ||
completer_data_factory_1.LocalDataFactoryProvider, | ||
completer_data_factory_1.RemoteDataFactoryProvider | ||
], | ||
exports: [ | ||
completer_cmp_1.CompleterCmp | ||
] | ||
}), | ||
__metadata('design:paramtypes', []) | ||
], Ng2CompleterModule); | ||
return Ng2CompleterModule; | ||
}()); | ||
exports.Ng2CompleterModule = Ng2CompleterModule; | ||
/***/ }, | ||
/* 14 */ | ||
/***/ function(module, exports) { | ||
@@ -1000,3 +1065,3 @@ | ||
/***/ }, | ||
/* 11 */ | ||
/* 15 */ | ||
/***/ function(module, exports) { | ||
@@ -1007,3 +1072,3 @@ | ||
/***/ }, | ||
/* 12 */ | ||
/* 16 */ | ||
/***/ function(module, exports) { | ||
@@ -1014,3 +1079,3 @@ | ||
/***/ }, | ||
/* 13 */ | ||
/* 17 */ | ||
/***/ function(module, exports) { | ||
@@ -1021,3 +1086,3 @@ | ||
/***/ }, | ||
/* 14 */ | ||
/* 18 */ | ||
/***/ function(module, exports) { | ||
@@ -1028,21 +1093,15 @@ | ||
/***/ }, | ||
/* 15 */ | ||
/* 19 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("@angular/forms"); | ||
module.exports = require("@angular/common"); | ||
/***/ }, | ||
/* 16 */ | ||
/* 20 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("@angular/http"); | ||
/***/ }, | ||
/* 17 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("rxjs/Observable"); | ||
/***/ }, | ||
/* 18 */ | ||
/* 21 */ | ||
/***/ function(module, exports) { | ||
@@ -1053,11 +1112,5 @@ | ||
/***/ }, | ||
/* 19 */ | ||
/* 22 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("rxjs/add/operator/catch"); | ||
/***/ }, | ||
/* 20 */ | ||
/***/ function(module, exports) { | ||
module.exports = require("rxjs/add/operator/map"); | ||
@@ -1064,0 +1117,0 @@ |
@@ -1,2 +0,2 @@ | ||
!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("@angular/core"),require("@angular/forms"),require("@angular/http"),require("rxjs/Observable"),require("rxjs/Subject"),require("rxjs/add/operator/catch"),require("rxjs/add/operator/map")):"function"==typeof define&&define.amd?define("ng2-completer",["@angular/core","@angular/forms","@angular/http","rxjs/Observable","rxjs/Subject","rxjs/add/operator/catch","rxjs/add/operator/map"],factory):"object"==typeof exports?exports["ng2-completer"]=factory(require("@angular/core"),require("@angular/forms"),require("@angular/http"),require("rxjs/Observable"),require("rxjs/Subject"),require("rxjs/add/operator/catch"),require("rxjs/add/operator/map")):root["ng2-completer"]=factory(root["@angular/core"],root["@angular/forms"],root["@angular/http"],root["rxjs/Observable"],root["rxjs/Subject"],root["rxjs/add/operator/catch"],root["rxjs/add/operator/map"])}(this,function(__WEBPACK_EXTERNAL_MODULE_1__,__WEBPACK_EXTERNAL_MODULE_15__,__WEBPACK_EXTERNAL_MODULE_16__,__WEBPACK_EXTERNAL_MODULE_17__,__WEBPACK_EXTERNAL_MODULE_18__,__WEBPACK_EXTERNAL_MODULE_19__,__WEBPACK_EXTERNAL_MODULE_20__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:!1};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.p="",__webpack_require__(0)}([function(module,exports,__webpack_require__){"use strict";var completer_cmp_1=__webpack_require__(6);exports.CompleterCmp=completer_cmp_1.CompleterCmp;var completer_data_factory_1=__webpack_require__(9);exports.COMPLETER_DATA_PROVIDERS=completer_data_factory_1.COMPLETER_DATA_PROVIDERS;var completer_service_1=__webpack_require__(5);exports.CompleterService=completer_service_1.CompleterService;var local_data_1=__webpack_require__(3);exports.LocalData=local_data_1.LocalData;var remote_data_1=__webpack_require__(4);exports.RemoteData=remote_data_1.RemoteData;var completer_base_data_1=__webpack_require__(2);exports.CompleterBaseData=completer_base_data_1.CompleterBaseData},function(module,exports){module.exports=require("@angular/core")},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)},Subject_1=__webpack_require__(18),CompleterBaseData=function(_super){function CompleterBaseData(){_super.call(this)}return __extends(CompleterBaseData,_super),CompleterBaseData.prototype.cancel=function(){},CompleterBaseData.prototype.searchFieldss=function(searchFields){return this._searchFields=searchFields,this},CompleterBaseData.prototype.titleField=function(titleField){return this._titleField=titleField,this},CompleterBaseData.prototype.descriptionField=function(descriptionField){return this._descriptionField=descriptionField,this},CompleterBaseData.prototype.imageField=function(imageField){return this._imageField=imageField,this},CompleterBaseData.prototype.extractMatches=function(data,term){var matches=[];if(this._searchFields&&""!=this._searchFields)for(var searchFields=this._searchFields.split(","),i=0;i<data.length;i++){for(var match=!1,s=0;s<searchFields.length;s++){var value=this.extractValue(data[i],searchFields[s])||"";match=match||value.toString().toLowerCase().indexOf(term.toString().toLowerCase())>=0}match&&(matches[matches.length]=data[i])}else matches=data;return matches},CompleterBaseData.prototype.extractTitle=function(item){var _this=this;return this._titleField.split(",").map(function(field){return _this.extractValue(item,field)}).join(" ")},CompleterBaseData.prototype.extractValue=function(obj,key){var keys,result;if(key){keys=key.split("."),result=obj;for(var i=0;i<keys.length;i++)result&&(result=result[keys[i]])}else result=obj;return result},CompleterBaseData.prototype.processResults=function(matches,term){var i,description,image,text,formattedText,formattedDesc,results=[];if(matches&&matches.length>0)for(i=0;i<matches.length;i++)this.titleField&&""!==this._titleField&&(text=formattedText=this.extractTitle(matches[i])),description="",this._descriptionField&&(description=formattedDesc=this.extractValue(matches[i],this._descriptionField)),image="",this._imageField&&(image=this.extractValue(matches[i],this._imageField)),results.push({title:formattedText,description:formattedDesc,image:image,originalObject:matches[i]});return results},CompleterBaseData}(Subject_1.Subject);exports.CompleterBaseData=CompleterBaseData},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)},__decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),completer_base_data_1=__webpack_require__(2),LocalData=function(_super){function LocalData(){_super.call(this)}return __extends(LocalData,_super),LocalData.prototype.data=function(data){return this._data=data,this},LocalData.prototype.search=function(term){var matches=this.extractMatches(this._data,term);this.next(this.processResults(matches,term))},LocalData=__decorate([core_1.Injectable(),__metadata("design:paramtypes",[])],LocalData)}(completer_base_data_1.CompleterBaseData);exports.LocalData=LocalData},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)};__webpack_require__(20);var completer_base_data_1=__webpack_require__(2),RemoteData=function(_super){function RemoteData(http){_super.call(this),this.http=http,this._urlFormater=null,this._dataField=null}return __extends(RemoteData,_super),RemoteData.prototype.remoteUrl=function(remoteUrl){return this._remoteUrl=remoteUrl,this},RemoteData.prototype.urlFormater=function(urlFormater){this._urlFormater=urlFormater},RemoteData.prototype.dataField=function(dataField){this._dataField=dataField},RemoteData.prototype.search=function(term){var _this=this;this.cancel();var url="";url=this._urlFormater?this._urlFormater(term):this._remoteUrl+encodeURIComponent(term),this.remoteSearch=this.http.get(url).map(function(res){return res.json()}).map(function(data){var matchaes=_this.extractValue(data,_this._dataField);return _this.extractMatches(matchaes,term)}).map(function(matches){var results=_this.processResults(matches,term);return _this.next(results),results}).catch(function(err){return _this.error(err),null}).subscribe()},RemoteData.prototype.cancel=function(){this.remoteSearch&&this.remoteSearch.unsubscribe()},RemoteData}(completer_base_data_1.CompleterBaseData);exports.RemoteData=RemoteData},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},__param=this&&this.__param||function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},core_1=__webpack_require__(1),local_data_1=__webpack_require__(3),remote_data_1=__webpack_require__(4),CompleterService=function(){function CompleterService(localDataFactory,remoteDataFactory){this.localDataFactory=localDataFactory,this.remoteDataFactory=remoteDataFactory}return CompleterService.prototype.local=function(data,searchFields,titleField){var localData=this.localDataFactory();return localData.data(data).searchFieldss(searchFields).titleField(titleField)},CompleterService.prototype.remote=function(url,searchFields,titleField){var remoteData=this.remoteDataFactory();return remoteData.remoteUrl(url).searchFieldss(searchFields).titleField(titleField)},CompleterService=__decorate([core_1.Injectable(),__param(0,core_1.Inject(local_data_1.LocalData)),__param(1,core_1.Inject(remote_data_1.RemoteData)),__metadata("design:paramtypes",[Function,Function])],CompleterService)}();exports.CompleterService=CompleterService},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),forms_1=__webpack_require__(15),Observable_1=__webpack_require__(17),completer_list_cmp_1=__webpack_require__(7);__webpack_require__(19);var template=__webpack_require__(11),defaultStyles=__webpack_require__(10),KEY_DW=40,KEY_RT=39,KEY_UP=38,KEY_LF=37,KEY_ES=27,KEY_EN=13,KEY_TAB=9,MIN_SEARCH_LENGTH=3,MAX_CHARS=524288,PAUSE=250,BLUR_TIMEOUT=200,TEXT_SEARCHING="Searching...",TEXT_NORESULTS="No results found",noop=function(){},COMPLETER_CONTROL_VALUE_ACCESSOR=new core_1.Provider(forms_1.NG_VALUE_ACCESSOR,{useExisting:core_1.forwardRef(function(){return CompleterCmp}),multi:!0}),CompleterCmp=function(){function CompleterCmp(){this.searchFields="",this.inputName="",this.pause=PAUSE,this.minSearchLength=MIN_SEARCH_LENGTH,this.maxChars=MAX_CHARS,this.overrideSuggested=!1,this.clearSelected=!1,this.placeholder="",this.textSearching=TEXT_SEARCHING,this.textNoResults=TEXT_NORESULTS,this.autoMatch=!1,this.disableInput=!1,this.selected=new core_1.EventEmitter,this.searchStr="",this.searching=!1,this.showDropdown=!1,this.displayNoResults=!0,this.searchTimer=null,this.hideTimer=null,this.displaySearching=!0,this.selectedObject=null,this.results=[],this._onTouchedCallback=noop,this._onChangeCallback=noop}return Object.defineProperty(CompleterCmp.prototype,"value",{get:function(){return this.searchStr},set:function(v){v!==this.searchStr&&(this.searchStr=v,this._onChangeCallback(v))},enumerable:!0,configurable:!0}),CompleterCmp.prototype.onTouched=function(){this._onTouchedCallback()},CompleterCmp.prototype.writeValue=function(value){this.searchStr=value},CompleterCmp.prototype.registerOnChange=function(fn){this._onChangeCallback=fn},CompleterCmp.prototype.registerOnTouched=function(fn){this._onTouchedCallback=fn},CompleterCmp.prototype.keyupHandler=function(event){var _this=this;if(event.keyCode!==KEY_LF&&event.keyCode!==KEY_RT)if(event.keyCode===KEY_UP||event.keyCode===KEY_EN)event.preventDefault();else if(event.keyCode===KEY_DW)event.preventDefault(),!this.showDropdown&&this.searchStr&&this.searchStr.length>=this.minSearchLength&&(this.initResults(),this.searching=!0,this.searchTimerComplete(this.searchStr));else if(event.keyCode===KEY_ES)this.clearResults();else{if(this._onChangeCallback(this.searchStr),!this.searchStr)return void(this.showDropdown=!1);""===this.searchStr?this.showDropdown=!1:this.searchStr.length>=this.minSearchLength&&(this.initResults(),this.searchTimer&&clearTimeout(this.searchTimer),this.searching=!0,this.searchTimer=setTimeout(function(){_this.searchTimerComplete(_this.searchStr)},this.pause))}},CompleterCmp.prototype.keydownHandler=function(event){this.listCmp&&(event.keyCode===KEY_EN&&this.results?this.listCmp.currentIndex>=0&&this.listCmp.currentIndex<this.results.length?(event.preventDefault(),this.selectResult(this.results[this.listCmp.currentIndex])):(this.handleOverrideSuggestions(event),this.clearResults()):event.keyCode===KEY_DW&&this.results?(event.preventDefault(),this.showDropdown&&this.listCmp.currentIndex+1<this.results.length&&(this.listCmp.incIndex(),this.searchStr=this.results[this.listCmp.currentIndex].title)):event.keyCode===KEY_UP&&this.results?(event.preventDefault(),this.showDropdown&&this.listCmp.currentIndex>=1?(this.listCmp.decIndex(),this.searchStr=this.results[this.listCmp.currentIndex].title):this.showDropdown&&0===this.listCmp.currentIndex&&this.listCmp.unselect()):event.keyCode===KEY_TAB?this.results&&this.results.length>0&&this.showDropdown?this.listCmp.currentIndex===-1&&this.overrideSuggested?this.handleOverrideSuggestions():(this.listCmp.currentIndex===-1&&this.listCmp.toTop(),this.selectResult(this.results[this.listCmp.currentIndex])):this.searchStr&&this.searchStr.length>0&&this.handleOverrideSuggestions():event.keyCode===KEY_ES&&event.preventDefault())},CompleterCmp.prototype.ngOnInit=function(){var _this=this;"false"===this.textNoResults&&(this.displayNoResults=!1),"false"===this.textSearching&&(this.displaySearching=!1),this.selected.subscribe(function(){_this.clearResults()}),this.dataService.catch(function(err){return _this.handleError(err)}).subscribe(function(results){_this.searching=!1,_this.results=results,_this.autoMatch&&1===_this.results.length&&_this.results[0].title.toLocaleLowerCase()===_this.searchStr.toLocaleLowerCase()?_this.showDropdown=!1:0!==_this.results.length||_this.displayNoResults?_this.showDropdown=!0:_this.showDropdown=!1})},CompleterCmp.prototype.selectResult=function(result){this.searchStr=result.title,this._onChangeCallback(this.searchStr),this.callOrAssign(result),this.clearSelected&&(this.searchStr=null),this.clearResults()},CompleterCmp.prototype.hideResults=function(){var _this=this;this.hideTimer=setTimeout(function(){_this.clearResults()},BLUR_TIMEOUT),this.overrideSuggested?this.searchStr&&this.searchStr.length>0&&this.listCmp&&this.listCmp.currentIndex===-1&&this.handleOverrideSuggestions():this.listCmp&&this.listCmp.currentIndex>=0&&this.selectResult(this.results[this.listCmp.currentIndex]),this.dataService.cancel()},CompleterCmp.prototype.onBlur=function(){this.onTouched(),this.hideResults()},CompleterCmp.prototype.initResults=function(){this.showDropdown=this.displaySearching,this.results=[]},CompleterCmp.prototype.searchTimerComplete=function(str){!str||str.length<this.minSearchLength||this.dataService.search(str)},CompleterCmp.prototype.clearResults=function(){this.results=[],this.showDropdown=!1},CompleterCmp.prototype.handleOverrideSuggestions=function(event){!this.overrideSuggested||this.selectedObject&&this.selectedObject.originalObject===this.searchStr||(event&&event.preventDefault(),clearTimeout(this.searchTimer),this.dataService.cancel(),this.setInputString(this.searchStr))},CompleterCmp.prototype.setInputString=function(str){this.callOrAssign({title:null,originalObject:str}),this.clearSelected&&(this.searchStr=null),this.clearResults()},CompleterCmp.prototype.callOrAssign=function(value){this.selectedObject=value,this.selected.emit(value)},CompleterCmp.prototype.handleError=function(error){this.searching=!1;var errMsg=error.message?error.message:error.status?error.status+" - "+error.statusText:"Server error";return console&&console.error&&console.error(errMsg),Observable_1.Observable.throw(errMsg)},__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"dataService",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"searchFields",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"inputName",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"pause",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"minSearchLength",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"maxChars",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"overrideSuggested",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"clearSelected",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"placeholder",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"textSearching",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"textNoResults",void 0),__decorate([core_1.Input(),__metadata("design:type",Number)],CompleterCmp.prototype,"fieldTabindex",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"autoMatch",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"disableInput",void 0),__decorate([core_1.Output(),__metadata("design:type",Object)],CompleterCmp.prototype,"selected",void 0),__decorate([core_1.ViewChild(completer_list_cmp_1.CompleterListCmp),__metadata("design:type",completer_list_cmp_1.CompleterListCmp)],CompleterCmp.prototype,"listCmp",void 0),CompleterCmp=__decorate([core_1.Component({selector:"ng2-completer",directives:[completer_list_cmp_1.CompleterListCmp],template:template,styles:[defaultStyles],providers:[COMPLETER_CONTROL_VALUE_ACCESSOR]}),__metadata("design:paramtypes",[])],CompleterCmp)}();exports.CompleterCmp=CompleterCmp},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),completer_list_item_cmp_1=__webpack_require__(8),template=__webpack_require__(13),defaultStyles=__webpack_require__(12),CompleterListCmp=function(){function CompleterListCmp(listElm){this.listElm=listElm,this.results=[],this.searchStr="",this.selected=new core_1.EventEmitter,this.currentIndex=-1,this.isScrollOn=!1}return CompleterListCmp.prototype.ngAfterContentInit=function(){this.dd=this.listElm.nativeElement.querySelector(".completer-dropdown");var css=getComputedStyle(this.dd);this.isScrollOn=css.maxHeight&&"auto"===css.overflowY},CompleterListCmp.prototype.onClick=function(result){this.selected.emit(result)},CompleterListCmp.prototype.hoverRow=function(index){this.currentIndex=index},CompleterListCmp.prototype.incIndex=function(){if(this.currentIndex++,this.isScrollOn){var row=this.dropdownRow();this.dropdownHeight()<row.getBoundingClientRect().bottom&&this.dropdownScrollTopTo(this.dropdownRowOffsetHeight(row))}},CompleterListCmp.prototype.decIndex=function(){if(this.currentIndex--,this.isScrollOn){var rowTop=this.dropdownRowTop();rowTop<0&&this.dropdownScrollTopTo(rowTop-1)}},CompleterListCmp.prototype.unselect=function(){this.currentIndex=-1},CompleterListCmp.prototype.toTop=function(){this.currentIndex=0},CompleterListCmp.prototype.dropdownRow=function(){return this.listElm.nativeElement.querySelectorAll(".completer-row")[this.currentIndex]},CompleterListCmp.prototype.dropdownHeight=function(){return this.dd.getBoundingClientRect().top+parseInt(getComputedStyle(this.dd).maxHeight,10)},CompleterListCmp.prototype.dropdownScrollTopTo=function(offset){this.dd.scrollTop=this.dd.scrollTop+offset},CompleterListCmp.prototype.dropdownRowOffsetHeight=function(row){var css=getComputedStyle(row);return row.offsetHeight+parseInt(css.marginTop,10)+parseInt(css.marginBottom,10)},CompleterListCmp.prototype.dropdownRowTop=function(){return this.dropdownRow().getBoundingClientRect().top-(this.dd.getBoundingClientRect().top+parseInt(getComputedStyle(this.dd).paddingTop,10))},__decorate([core_1.Input(),__metadata("design:type",Array)],CompleterListCmp.prototype,"results",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterListCmp.prototype,"searchStr",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"textSearching",void 0),__decorate([core_1.Input(),__metadata("design:type",Boolean)],CompleterListCmp.prototype,"searching",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"textNoResults",void 0),__decorate([core_1.Input(),__metadata("design:type",Boolean)],CompleterListCmp.prototype,"displaySearching",void 0),__decorate([core_1.Output(),__metadata("design:type",Object)],CompleterListCmp.prototype,"selected",void 0),CompleterListCmp=__decorate([core_1.Component({selector:"completer-list",template:template,styles:[defaultStyles],directives:[completer_list_item_cmp_1.CompleterListItemCmp]}),__metadata("design:paramtypes",[core_1.ElementRef])],CompleterListCmp)}();exports.CompleterListCmp=CompleterListCmp},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),template=__webpack_require__(14),CompleterListItemCmp=function(){function CompleterListItemCmp(){this.parts=[]}return CompleterListItemCmp.prototype.ngOnInit=function(){for(var matchStr=this.text.toLowerCase(),matchPos=matchStr.indexOf(this.searchStr.toLowerCase()),startIndex=0;matchPos>=0;){var matchText=this.text.slice(matchPos,matchPos+this.searchStr.length);if(0===matchPos)this.parts.push({isMatch:!0,text:matchText}),startIndex+=this.searchStr.length;else if(matchPos>0){var matchPart=this.text.slice(startIndex,matchPos);this.parts.push({isMatch:!1,text:matchPart}),this.parts.push({isMatch:!0,text:matchText}),startIndex+=this.searchStr.length+matchPart.length}matchPos=matchStr.indexOf(this.searchStr.toLowerCase(),startIndex)}startIndex<this.text.length&&this.parts.push({isMatch:!1,text:this.text.slice(startIndex,this.text.length)})},__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"text",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"searchStr",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"type",void 0),CompleterListItemCmp=__decorate([core_1.Component({selector:"completer-list-item",template:template}),__metadata("design:paramtypes",[])],CompleterListItemCmp)}();exports.CompleterListItemCmp=CompleterListItemCmp},function(module,exports,__webpack_require__){"use strict";function localDataFactory(){return function(){return new local_data_1.LocalData}}function remoteDataFactory(http){return function(){return new remote_data_1.RemoteData(http)}}var core_1=__webpack_require__(1),http_1=__webpack_require__(16),local_data_1=__webpack_require__(3),remote_data_1=__webpack_require__(4),completer_service_1=__webpack_require__(5);exports.localDataFactory=localDataFactory,exports.remoteDataFactory=remoteDataFactory,exports.COMPLETER_DATA_PROVIDERS=[core_1.provide(local_data_1.LocalData,{useFactory:localDataFactory}),core_1.provide(remote_data_1.RemoteData,{useFactory:remoteDataFactory,deps:[http_1.Http]}),core_1.provide(completer_service_1.CompleterService,{useClass:completer_service_1.CompleterService})]},function(module,exports){module.exports=""},function(module,exports){module.exports='<div class="completer-holder">\n <input class="completer-input"\n [(ngModel)]="searchStr"\n (keyup)="keyupHandler($event)"\n (keydown)="keydownHandler($event)"\n [attr.name]="inputName"\n [placeholder]="placeholder"\n [attr.maxlength]="maxChars"\n (blur)="onBlur()"\n [tabindex]="fieldTabindex"\n [disabled]="disableInput"\n completer="off"\n autocorrect="off"\n autocapitalize="off"\n />\n <completer-list *ngIf="showDropdown" class="completer-dropdown-holder" [results]="results" [searchStr]="searchStr" (selected)="selectResult($event)" \n [matchClass]="matchClass" [textSearching]="textSearching" [searching]="searching" [textNoResults]="textNoResults" [displaySearching]="displaySearching">\n </completer-list>\n\n</div>'},function(module,exports){module.exports=".completer-dropdown {\n border-color: #ececec;\n border-width: 1px;\n border-style: solid;\n border-radius: 2px;\n width: 250px;\n padding: 6px;\n cursor: pointer;\n z-index: 9999;\n position: absolute;\n /*top: 32px;\n left: 0px;\n */\n margin-top: -6px;\n background-color: #ffffff;\n}\n\n.completer-row {\n padding: 5px;\n color: #000000;\n margin-bottom: 4px;\n clear: both;\n}\n\n.completer-selected-row {\n background-color: lightblue;\n color: #ffffff;\n}\n\n.completer-description {\n font-size: 14px;\n}"},function(module,exports){module.exports='<div class="completer-dropdown">\n <div *ngIf="searching && displaySearching" class="completer-searching">{{textSearching}}</div>\n <div *ngIf="!searching && (!results || results.length == 0)" class="completer-no-results">{{textNoResults}}</div>\n <div class="completer-row" *ngFor="let result of results; let i=index" (mouseenter)="hoverRow(i)" (click)="onClick(result)" [ngClass]="{\'completer-selected-row\': i == currentIndex}">\n <div *ngIf="result.image && result.image != \'\'" class="completer-image-holder">\n <img *ngIf="result.image && result.image != \'\'" src="{{result.image}}" class="completer-image" />\n <div *ngIf="!result.image && result.image != \'\'" class="completer-image-default"></div>\n </div>\n <completer-list-item class="completer-title" [text]="result.title" [matchClass]="matchClass" [searchStr]="searchStr" [type]="\'title\'"></completer-list-item>\n <completer-list-item *ngIf="result.description && result.description != \'\'" class="completer-description"\n [text]="result.description" [matchClass]="matchClass" [searchStr]="searchStr" [type]="\'description\'">\n </completer-list-item>\n\n <!--<div ng-if="matchClass && result.description && result.description != \\\'\\\'" class="angucomplete-description" ng-bind-html="result.description"></div>-->\n <!--<div *ngIf="!matchClass && result.description && result.description != \'\'" class="completer-description">{{result.description}}</div>-->\n </div>\n</div>'},function(module,exports){module.exports='<div class="completer-list-item-holder" [ngClass]="{\'completer-title\': type === \'title\', \'completer-description\': type === \'description\'}" >\n <span class="completer-list-item" *ngFor="let part of parts" [ngClass]="part.isMatch ? matchClass : null">{{part.text}}</span>\n</div>'},function(module,exports){module.exports=require("@angular/forms")},function(module,exports){module.exports=require("@angular/http")},function(module,exports){module.exports=require("rxjs/Observable")},function(module,exports){module.exports=require("rxjs/Subject")},function(module,exports){module.exports=require("rxjs/add/operator/catch")},function(module,exports){module.exports=require("rxjs/add/operator/map")}])}); | ||
!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("@angular/core"),require("@angular/forms"),require("@angular/http"),require("rxjs/add/operator/catch"),require("@angular/common"),require("rxjs/Observable"),require("rxjs/Subject"),require("rxjs/add/operator/map")):"function"==typeof define&&define.amd?define("ng2-completer",["@angular/core","@angular/forms","@angular/http","rxjs/add/operator/catch","@angular/common","rxjs/Observable","rxjs/Subject","rxjs/add/operator/map"],factory):"object"==typeof exports?exports["ng2-completer"]=factory(require("@angular/core"),require("@angular/forms"),require("@angular/http"),require("rxjs/add/operator/catch"),require("@angular/common"),require("rxjs/Observable"),require("rxjs/Subject"),require("rxjs/add/operator/map")):root["ng2-completer"]=factory(root["@angular/core"],root["@angular/forms"],root["@angular/http"],root["rxjs/add/operator/catch"],root["@angular/common"],root["rxjs/Observable"],root["rxjs/Subject"],root["rxjs/add/operator/map"])}(this,function(__WEBPACK_EXTERNAL_MODULE_1__,__WEBPACK_EXTERNAL_MODULE_7__,__WEBPACK_EXTERNAL_MODULE_8__,__WEBPACK_EXTERNAL_MODULE_9__,__WEBPACK_EXTERNAL_MODULE_19__,__WEBPACK_EXTERNAL_MODULE_20__,__WEBPACK_EXTERNAL_MODULE_21__,__WEBPACK_EXTERNAL_MODULE_22__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:!1};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.p="",__webpack_require__(0)}([function(module,exports,__webpack_require__){"use strict";var ng2_completer_module_1=__webpack_require__(13);exports.Ng2CompleterModule=ng2_completer_module_1.Ng2CompleterModule;var completer_service_1=__webpack_require__(6);exports.CompleterService=completer_service_1.CompleterService;var local_data_1=__webpack_require__(3);exports.LocalData=local_data_1.LocalData;var remote_data_1=__webpack_require__(4);exports.RemoteData=remote_data_1.RemoteData;var completer_base_data_1=__webpack_require__(2);exports.CompleterBaseData=completer_base_data_1.CompleterBaseData},function(module,exports){module.exports=require("@angular/core")},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)},Subject_1=__webpack_require__(21),CompleterBaseData=function(_super){function CompleterBaseData(){_super.call(this)}return __extends(CompleterBaseData,_super),CompleterBaseData.prototype.cancel=function(){},CompleterBaseData.prototype.searchFieldss=function(searchFields){return this._searchFields=searchFields,this},CompleterBaseData.prototype.titleField=function(titleField){return this._titleField=titleField,this},CompleterBaseData.prototype.descriptionField=function(descriptionField){return this._descriptionField=descriptionField,this},CompleterBaseData.prototype.imageField=function(imageField){return this._imageField=imageField,this},CompleterBaseData.prototype.extractMatches=function(data,term){var matches=[];if(this._searchFields&&""!=this._searchFields)for(var searchFields=this._searchFields.split(","),i=0;i<data.length;i++){for(var match=!1,s=0;s<searchFields.length;s++){var value=this.extractValue(data[i],searchFields[s])||"";match=match||value.toString().toLowerCase().indexOf(term.toString().toLowerCase())>=0}match&&(matches[matches.length]=data[i])}else matches=data;return matches},CompleterBaseData.prototype.extractTitle=function(item){var _this=this;return this._titleField.split(",").map(function(field){return _this.extractValue(item,field)}).join(" ")},CompleterBaseData.prototype.extractValue=function(obj,key){var keys,result;if(key){keys=key.split("."),result=obj;for(var i=0;i<keys.length;i++)result&&(result=result[keys[i]])}else result=obj;return result},CompleterBaseData.prototype.processResults=function(matches,term){var i,description,image,text,formattedText,formattedDesc,results=[];if(matches&&matches.length>0)for(i=0;i<matches.length;i++)this.titleField&&""!==this._titleField&&(text=formattedText=this.extractTitle(matches[i])),description="",this._descriptionField&&(description=formattedDesc=this.extractValue(matches[i],this._descriptionField)),image="",this._imageField&&(image=this.extractValue(matches[i],this._imageField)),results.push({title:formattedText,description:formattedDesc,image:image,originalObject:matches[i]});return results},CompleterBaseData}(Subject_1.Subject);exports.CompleterBaseData=CompleterBaseData},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)},__decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),completer_base_data_1=__webpack_require__(2),LocalData=function(_super){function LocalData(){_super.call(this)}return __extends(LocalData,_super),LocalData.prototype.data=function(data){return this._data=data,this},LocalData.prototype.search=function(term){var matches=this.extractMatches(this._data,term);this.next(this.processResults(matches,term))},LocalData=__decorate([core_1.Injectable(),__metadata("design:paramtypes",[])],LocalData)}(completer_base_data_1.CompleterBaseData);exports.LocalData=LocalData},function(module,exports,__webpack_require__){"use strict";var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)};__webpack_require__(22),__webpack_require__(9);var completer_base_data_1=__webpack_require__(2),RemoteData=function(_super){function RemoteData(http){_super.call(this),this.http=http,this._urlFormater=null,this._dataField=null}return __extends(RemoteData,_super),RemoteData.prototype.remoteUrl=function(remoteUrl){return this._remoteUrl=remoteUrl,this},RemoteData.prototype.urlFormater=function(urlFormater){this._urlFormater=urlFormater},RemoteData.prototype.dataField=function(dataField){this._dataField=dataField},RemoteData.prototype.search=function(term){var _this=this;this.cancel();var url="";url=this._urlFormater?this._urlFormater(term):this._remoteUrl+encodeURIComponent(term),this.remoteSearch=this.http.get(url).map(function(res){return res.json()}).map(function(data){var matchaes=_this.extractValue(data,_this._dataField);return _this.extractMatches(matchaes,term)}).map(function(matches){var results=_this.processResults(matches,term);return _this.next(results),results}).catch(function(err){return _this.error(err),null}).subscribe()},RemoteData.prototype.cancel=function(){this.remoteSearch&&this.remoteSearch.unsubscribe()},RemoteData}(completer_base_data_1.CompleterBaseData);exports.RemoteData=RemoteData},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),template=__webpack_require__(17),defaultStyles=__webpack_require__(16),CompleterListCmp=function(){function CompleterListCmp(listElm){this.listElm=listElm,this.results=[],this.searchStr="",this.selected=new core_1.EventEmitter,this.currentIndex=-1,this.isScrollOn=!1}return CompleterListCmp.prototype.ngAfterContentInit=function(){this.dd=this.listElm.nativeElement.querySelector(".completer-dropdown");var css=getComputedStyle(this.dd);this.isScrollOn=css.maxHeight&&"auto"===css.overflowY},CompleterListCmp.prototype.onClick=function(result){this.selected.emit(result)},CompleterListCmp.prototype.hoverRow=function(index){this.currentIndex=index},CompleterListCmp.prototype.incIndex=function(){if(this.currentIndex++,this.isScrollOn){var row=this.dropdownRow();this.dropdownHeight()<row.getBoundingClientRect().bottom&&this.dropdownScrollTopTo(this.dropdownRowOffsetHeight(row))}},CompleterListCmp.prototype.decIndex=function(){if(this.currentIndex--,this.isScrollOn){var rowTop=this.dropdownRowTop();rowTop<0&&this.dropdownScrollTopTo(rowTop-1)}},CompleterListCmp.prototype.unselect=function(){this.currentIndex=-1},CompleterListCmp.prototype.toTop=function(){this.currentIndex=0},CompleterListCmp.prototype.dropdownRow=function(){return this.listElm.nativeElement.querySelectorAll(".completer-row")[this.currentIndex]},CompleterListCmp.prototype.dropdownHeight=function(){return this.dd.getBoundingClientRect().top+parseInt(getComputedStyle(this.dd).maxHeight,10)},CompleterListCmp.prototype.dropdownScrollTopTo=function(offset){this.dd.scrollTop=this.dd.scrollTop+offset},CompleterListCmp.prototype.dropdownRowOffsetHeight=function(row){var css=getComputedStyle(row);return row.offsetHeight+parseInt(css.marginTop,10)+parseInt(css.marginBottom,10)},CompleterListCmp.prototype.dropdownRowTop=function(){return this.dropdownRow().getBoundingClientRect().top-(this.dd.getBoundingClientRect().top+parseInt(getComputedStyle(this.dd).paddingTop,10))},__decorate([core_1.Input(),__metadata("design:type",Array)],CompleterListCmp.prototype,"results",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterListCmp.prototype,"searchStr",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"textSearching",void 0),__decorate([core_1.Input(),__metadata("design:type",Boolean)],CompleterListCmp.prototype,"searching",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListCmp.prototype,"textNoResults",void 0),__decorate([core_1.Input(),__metadata("design:type",Boolean)],CompleterListCmp.prototype,"displaySearching",void 0),__decorate([core_1.Output(),__metadata("design:type",Object)],CompleterListCmp.prototype,"selected",void 0),CompleterListCmp=__decorate([core_1.Component({selector:"completer-list",template:template,styles:[defaultStyles]}),__metadata("design:paramtypes",[core_1.ElementRef])],CompleterListCmp)}();exports.CompleterListCmp=CompleterListCmp},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},__param=this&&this.__param||function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},core_1=__webpack_require__(1),local_data_1=__webpack_require__(3),remote_data_1=__webpack_require__(4),CompleterService=function(){function CompleterService(localDataFactory,remoteDataFactory){this.localDataFactory=localDataFactory,this.remoteDataFactory=remoteDataFactory}return CompleterService.prototype.local=function(data,searchFields,titleField){var localData=this.localDataFactory();return localData.data(data).searchFieldss(searchFields).titleField(titleField)},CompleterService.prototype.remote=function(url,searchFields,titleField){var remoteData=this.remoteDataFactory();return remoteData.remoteUrl(url).searchFieldss(searchFields).titleField(titleField)},CompleterService=__decorate([core_1.Injectable(),__param(0,core_1.Inject(local_data_1.LocalData)),__param(1,core_1.Inject(remote_data_1.RemoteData)),__metadata("design:paramtypes",[Function,Function])],CompleterService)}();exports.CompleterService=CompleterService},function(module,exports){module.exports=require("@angular/forms")},function(module,exports){module.exports=require("@angular/http")},function(module,exports){module.exports=require("rxjs/add/operator/catch")},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),forms_1=__webpack_require__(7),Observable_1=__webpack_require__(20),completer_list_cmp_1=__webpack_require__(5);__webpack_require__(9);var template=__webpack_require__(15),defaultStyles=__webpack_require__(14),KEY_DW=40,KEY_RT=39,KEY_UP=38,KEY_LF=37,KEY_ES=27,KEY_EN=13,KEY_TAB=9,MIN_SEARCH_LENGTH=3,MAX_CHARS=524288,PAUSE=250,BLUR_TIMEOUT=200,TEXT_SEARCHING="Searching...",TEXT_NORESULTS="No results found",noop=function(){},COMPLETER_CONTROL_VALUE_ACCESSOR={provide:forms_1.NG_VALUE_ACCESSOR,useExisting:core_1.forwardRef(function(){return CompleterCmp}),multi:!0},CompleterCmp=function(){function CompleterCmp(){this.searchFields="",this.inputName="",this.pause=PAUSE,this.minSearchLength=MIN_SEARCH_LENGTH,this.maxChars=MAX_CHARS,this.overrideSuggested=!1,this.clearSelected=!1,this.placeholder="",this.textSearching=TEXT_SEARCHING,this.textNoResults=TEXT_NORESULTS,this.autoMatch=!1,this.disableInput=!1,this.selected=new core_1.EventEmitter,this.searchStr="",this.searching=!1,this.showDropdown=!1,this.displayNoResults=!0,this.searchTimer=null,this.hideTimer=null,this.displaySearching=!0,this.selectedObject=null,this.results=[],this._onTouchedCallback=noop,this._onChangeCallback=noop}return Object.defineProperty(CompleterCmp.prototype,"value",{get:function(){return this.searchStr},set:function(v){v!==this.searchStr&&(this.searchStr=v,this._onChangeCallback(v))},enumerable:!0,configurable:!0}),CompleterCmp.prototype.onTouched=function(){this._onTouchedCallback()},CompleterCmp.prototype.writeValue=function(value){this.searchStr=value},CompleterCmp.prototype.registerOnChange=function(fn){this._onChangeCallback=fn},CompleterCmp.prototype.registerOnTouched=function(fn){this._onTouchedCallback=fn},CompleterCmp.prototype.keyupHandler=function(event){var _this=this;if(event.keyCode!==KEY_LF&&event.keyCode!==KEY_RT)if(event.keyCode===KEY_UP||event.keyCode===KEY_EN)event.preventDefault();else if(event.keyCode===KEY_DW)event.preventDefault(),!this.showDropdown&&this.searchStr&&this.searchStr.length>=this.minSearchLength&&(this.initResults(),this.searching=!0,this.searchTimerComplete(this.searchStr));else if(event.keyCode===KEY_ES)this.clearResults();else{if(this._onChangeCallback(this.searchStr),!this.searchStr)return void(this.showDropdown=!1);""===this.searchStr?this.showDropdown=!1:this.searchStr.length>=this.minSearchLength&&(this.initResults(),this.searchTimer&&clearTimeout(this.searchTimer),this.searching=!0,this.searchTimer=setTimeout(function(){_this.searchTimerComplete(_this.searchStr)},this.pause))}},CompleterCmp.prototype.keydownHandler=function(event){this.listCmp&&(event.keyCode===KEY_EN&&this.results?this.listCmp.currentIndex>=0&&this.listCmp.currentIndex<this.results.length?(event.preventDefault(),this.selectResult(this.results[this.listCmp.currentIndex])):(this.handleOverrideSuggestions(event),this.clearResults()):event.keyCode===KEY_DW&&this.results?(event.preventDefault(),this.showDropdown&&this.listCmp.currentIndex+1<this.results.length&&(this.listCmp.incIndex(),this.searchStr=this.results[this.listCmp.currentIndex].title)):event.keyCode===KEY_UP&&this.results?(event.preventDefault(),this.showDropdown&&this.listCmp.currentIndex>=1?(this.listCmp.decIndex(),this.searchStr=this.results[this.listCmp.currentIndex].title):this.showDropdown&&0===this.listCmp.currentIndex&&this.listCmp.unselect()):event.keyCode===KEY_TAB?this.results&&this.results.length>0&&this.showDropdown?this.listCmp.currentIndex===-1&&this.overrideSuggested?this.handleOverrideSuggestions():(this.listCmp.currentIndex===-1&&this.listCmp.toTop(),this.selectResult(this.results[this.listCmp.currentIndex])):this.searchStr&&this.searchStr.length>0&&this.handleOverrideSuggestions():event.keyCode===KEY_ES&&event.preventDefault())},CompleterCmp.prototype.ngOnInit=function(){var _this=this;"false"===this.textNoResults&&(this.displayNoResults=!1),"false"===this.textSearching&&(this.displaySearching=!1),this.selected.subscribe(function(){_this.clearResults()}),this.dataService.catch(function(err){return _this.handleError(err)}).subscribe(function(results){_this.searching=!1,_this.results=results,_this.autoMatch&&1===_this.results.length&&_this.results[0].title.toLocaleLowerCase()===_this.searchStr.toLocaleLowerCase()?_this.showDropdown=!1:0!==_this.results.length||_this.displayNoResults?_this.showDropdown=!0:_this.showDropdown=!1})},CompleterCmp.prototype.selectResult=function(result){this.searchStr=result.title,this._onChangeCallback(this.searchStr),this.callOrAssign(result),this.clearSelected&&(this.searchStr=null),this.clearResults()},CompleterCmp.prototype.hideResults=function(){var _this=this;this.hideTimer=setTimeout(function(){_this.clearResults()},BLUR_TIMEOUT),this.overrideSuggested?this.searchStr&&this.searchStr.length>0&&this.listCmp&&this.listCmp.currentIndex===-1&&this.handleOverrideSuggestions():this.listCmp&&this.listCmp.currentIndex>=0&&this.selectResult(this.results[this.listCmp.currentIndex]),this.dataService.cancel()},CompleterCmp.prototype.onBlur=function(){this.onTouched(),this.hideResults()},CompleterCmp.prototype.initResults=function(){this.showDropdown=this.displaySearching,this.results=[]},CompleterCmp.prototype.searchTimerComplete=function(str){!str||str.length<this.minSearchLength||this.dataService.search(str)},CompleterCmp.prototype.clearResults=function(){this.results=[],this.showDropdown=!1},CompleterCmp.prototype.handleOverrideSuggestions=function(event){!this.overrideSuggested||this.selectedObject&&this.selectedObject.originalObject===this.searchStr||(event&&event.preventDefault(),clearTimeout(this.searchTimer),this.dataService.cancel(),this.setInputString(this.searchStr))},CompleterCmp.prototype.setInputString=function(str){this.callOrAssign({title:null,originalObject:str}),this.clearSelected&&(this.searchStr=null),this.clearResults()},CompleterCmp.prototype.callOrAssign=function(value){this.selectedObject=value,this.selected.emit(value)},CompleterCmp.prototype.handleError=function(error){this.searching=!1;var errMsg=error.message?error.message:error.status?error.status+" - "+error.statusText:"Server error";return console&&console.error&&console.error(errMsg),Observable_1.Observable.throw(errMsg)},__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"dataService",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"searchFields",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"inputName",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"pause",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"minSearchLength",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"maxChars",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"overrideSuggested",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"clearSelected",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"placeholder",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"textSearching",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"textNoResults",void 0),__decorate([core_1.Input(),__metadata("design:type",Number)],CompleterCmp.prototype,"fieldTabindex",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"autoMatch",void 0),__decorate([core_1.Input(),__metadata("design:type",Object)],CompleterCmp.prototype,"disableInput",void 0),__decorate([core_1.Output(),__metadata("design:type",Object)],CompleterCmp.prototype,"selected",void 0),__decorate([core_1.ViewChild(completer_list_cmp_1.CompleterListCmp),__metadata("design:type",completer_list_cmp_1.CompleterListCmp)],CompleterCmp.prototype,"listCmp",void 0),CompleterCmp=__decorate([core_1.Component({selector:"ng2-completer",template:template,styles:[defaultStyles],providers:[COMPLETER_CONTROL_VALUE_ACCESSOR]}),__metadata("design:paramtypes",[])],CompleterCmp)}();exports.CompleterCmp=CompleterCmp},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),template=__webpack_require__(18),CompleterListItemCmp=function(){function CompleterListItemCmp(){this.parts=[]}return CompleterListItemCmp.prototype.ngOnInit=function(){for(var matchStr=this.text.toLowerCase(),matchPos=matchStr.indexOf(this.searchStr.toLowerCase()),startIndex=0;matchPos>=0;){var matchText=this.text.slice(matchPos,matchPos+this.searchStr.length);if(0===matchPos)this.parts.push({isMatch:!0,text:matchText}),startIndex+=this.searchStr.length;else if(matchPos>0){var matchPart=this.text.slice(startIndex,matchPos);this.parts.push({isMatch:!1,text:matchPart}),this.parts.push({isMatch:!0,text:matchText}),startIndex+=this.searchStr.length+matchPart.length}matchPos=matchStr.indexOf(this.searchStr.toLowerCase(),startIndex)}startIndex<this.text.length&&this.parts.push({isMatch:!1,text:this.text.slice(startIndex,this.text.length)})},__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"text",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"searchStr",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"matchClass",void 0),__decorate([core_1.Input(),__metadata("design:type",String)],CompleterListItemCmp.prototype,"type",void 0),CompleterListItemCmp=__decorate([core_1.Component({selector:"completer-list-item",template:template}),__metadata("design:paramtypes",[])],CompleterListItemCmp)}();exports.CompleterListItemCmp=CompleterListItemCmp},function(module,exports,__webpack_require__){"use strict";function localDataFactory(){return function(){return new local_data_1.LocalData}}function remoteDataFactory(http){return function(){return new remote_data_1.RemoteData(http)}}var http_1=__webpack_require__(8),local_data_1=__webpack_require__(3),remote_data_1=__webpack_require__(4);exports.localDataFactory=localDataFactory,exports.remoteDataFactory=remoteDataFactory,exports.LocalDataFactoryProvider={provide:local_data_1.LocalData,useFactory:localDataFactory},exports.RemoteDataFactoryProvider={provide:remote_data_1.RemoteData,useFactory:remoteDataFactory,deps:[http_1.Http]}},function(module,exports,__webpack_require__){"use strict";var __decorate=this&&this.__decorate||function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},__metadata=this&&this.__metadata||function(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)},core_1=__webpack_require__(1),forms_1=__webpack_require__(7),http_1=__webpack_require__(8),completer_cmp_1=__webpack_require__(10),completer_list_cmp_1=__webpack_require__(5),completer_list_item_cmp_1=__webpack_require__(11),completer_service_1=__webpack_require__(6),completer_data_factory_1=__webpack_require__(12),common_1=__webpack_require__(19),Ng2CompleterModule=function(){function Ng2CompleterModule(){}return Ng2CompleterModule=__decorate([core_1.NgModule({imports:[common_1.CommonModule,forms_1.FormsModule,forms_1.ReactiveFormsModule,http_1.HttpModule],declarations:[completer_cmp_1.CompleterCmp,completer_list_cmp_1.CompleterListCmp,completer_list_item_cmp_1.CompleterListItemCmp],providers:[completer_service_1.CompleterService,completer_data_factory_1.LocalDataFactoryProvider,completer_data_factory_1.RemoteDataFactoryProvider],exports:[completer_cmp_1.CompleterCmp]}),__metadata("design:paramtypes",[])],Ng2CompleterModule)}();exports.Ng2CompleterModule=Ng2CompleterModule},function(module,exports){module.exports=""},function(module,exports){module.exports='<div class="completer-holder">\n <input class="completer-input"\n [(ngModel)]="searchStr"\n (keyup)="keyupHandler($event)"\n (keydown)="keydownHandler($event)"\n [attr.name]="inputName"\n [placeholder]="placeholder"\n [attr.maxlength]="maxChars"\n (blur)="onBlur()"\n [tabindex]="fieldTabindex"\n [disabled]="disableInput"\n completer="off"\n autocorrect="off"\n autocapitalize="off"\n />\n <completer-list *ngIf="showDropdown" class="completer-dropdown-holder" [results]="results" [searchStr]="searchStr" (selected)="selectResult($event)" \n [matchClass]="matchClass" [textSearching]="textSearching" [searching]="searching" [textNoResults]="textNoResults" [displaySearching]="displaySearching">\n </completer-list>\n\n</div>'},function(module,exports){module.exports=".completer-dropdown {\n border-color: #ececec;\n border-width: 1px;\n border-style: solid;\n border-radius: 2px;\n width: 250px;\n padding: 6px;\n cursor: pointer;\n z-index: 9999;\n position: absolute;\n /*top: 32px;\n left: 0px;\n */\n margin-top: -6px;\n background-color: #ffffff;\n}\n\n.completer-row {\n padding: 5px;\n color: #000000;\n margin-bottom: 4px;\n clear: both;\n}\n\n.completer-selected-row {\n background-color: lightblue;\n color: #ffffff;\n}\n\n.completer-description {\n font-size: 14px;\n}"},function(module,exports){module.exports='<div class="completer-dropdown">\n <div *ngIf="searching && displaySearching" class="completer-searching">{{textSearching}}</div>\n <div *ngIf="!searching && (!results || results.length == 0)" class="completer-no-results">{{textNoResults}}</div>\n <div class="completer-row" *ngFor="let result of results; let i=index" (mouseenter)="hoverRow(i)" (click)="onClick(result)" [ngClass]="{\'completer-selected-row\': i == currentIndex}">\n <div *ngIf="result.image && result.image != \'\'" class="completer-image-holder">\n <img *ngIf="result.image && result.image != \'\'" src="{{result.image}}" class="completer-image" />\n <div *ngIf="!result.image && result.image != \'\'" class="completer-image-default"></div>\n </div>\n <completer-list-item class="completer-title" [text]="result.title" [matchClass]="matchClass" [searchStr]="searchStr" [type]="\'title\'"></completer-list-item>\n <completer-list-item *ngIf="result.description && result.description != \'\'" class="completer-description"\n [text]="result.description" [matchClass]="matchClass" [searchStr]="searchStr" [type]="\'description\'">\n </completer-list-item>\n\n <!--<div ng-if="matchClass && result.description && result.description != \\\'\\\'" class="angucomplete-description" ng-bind-html="result.description"></div>-->\n <!--<div *ngIf="!matchClass && result.description && result.description != \'\'" class="completer-description">{{result.description}}</div>-->\n </div>\n</div>'},function(module,exports){module.exports='<div class="completer-list-item-holder" [ngClass]="{\'completer-title\': type === \'title\', \'completer-description\': type === \'description\'}" >\n <span class="completer-list-item" *ngFor="let part of parts" [ngClass]="part.isMatch ? matchClass : null">{{part.text}}</span>\n</div>'},function(module,exports){module.exports=require("@angular/common")},function(module,exports){module.exports=require("rxjs/Observable")},function(module,exports){module.exports=require("rxjs/Subject")},function(module,exports){module.exports=require("rxjs/add/operator/map")}])}); | ||
//# sourceMappingURL=ng2-completer.min.js.map |
@@ -1,2 +0,1 @@ | ||
import { Provider } from "@angular/core"; | ||
import { Http } from "@angular/http"; | ||
@@ -7,2 +6,10 @@ import { LocalData } from "./local-data"; | ||
export declare function remoteDataFactory(http: Http): () => RemoteData; | ||
export declare let COMPLETER_DATA_PROVIDERS: Provider[]; | ||
export declare let LocalDataFactoryProvider: { | ||
provide: typeof LocalData; | ||
useFactory: () => () => LocalData; | ||
}; | ||
export declare let RemoteDataFactoryProvider: { | ||
provide: typeof RemoteData; | ||
useFactory: (http: Http) => () => RemoteData; | ||
deps: typeof Http[]; | ||
}; |
import { Http } from "@angular/http"; | ||
import "rxjs/add/operator/map"; | ||
import "rxjs/add/operator/catch"; | ||
import { CompleterBaseData } from "./completer-base-data"; | ||
@@ -4,0 +5,0 @@ export declare class RemoteData extends CompleterBaseData { |
@@ -1,3 +0,2 @@ | ||
export { CompleterCmp } from "./components/ng2-completer/completer-cmp"; | ||
export { COMPLETER_DATA_PROVIDERS } from "./components/ng2-completer/services/completer-data-factory"; | ||
export { Ng2CompleterModule } from "./ng2-completer.module"; | ||
export { CompleterService } from "./components/ng2-completer/services/completer-service"; | ||
@@ -4,0 +3,0 @@ export { CompleterData } from "./components/ng2-completer/services/completer-data"; |
{ | ||
"name": "ng2-completer", | ||
"version": "0.1.8", | ||
"version": "0.1.9", | ||
"description": "ng2 autocomplete/typeahead component", | ||
@@ -33,17 +33,17 @@ "main": "bundles/ng2-completer.js", | ||
"peerDependencies": { | ||
"@angular/common": "^2.0.0-rc.5", | ||
"@angular/compiler": "^2.0.0-rc.5", | ||
"@angular/core": "^2.0.0-rc.5", | ||
"@angular/forms": "^0.3.0", | ||
"@angular/http": "^2.0.0-rc.5" | ||
"@angular/common": "^2.0.0-rc.6", | ||
"@angular/compiler": "^2.0.0-rc.6", | ||
"@angular/core": "^2.0.0-rc.6", | ||
"@angular/forms": "^2.0.0-rc.6", | ||
"@angular/http": "^2.0.0-rc.6" | ||
}, | ||
"devDependencies": { | ||
"@angular/common": "^2.0.0-rc.5", | ||
"@angular/compiler": "^2.0.0-rc.5", | ||
"@angular/core": "^2.0.0-rc.5", | ||
"@angular/forms": "^0.3.0", | ||
"@angular/http": "^2.0.0-rc.5", | ||
"@angular/platform-browser": "^2.0.0-rc.5", | ||
"@angular/platform-browser-dynamic": "^2.0.0-rc.5", | ||
"@angular/router": "^3.0.0-rc.1", | ||
"@angular/common": "^2.0.0-rc.6", | ||
"@angular/compiler": "^2.0.0-rc.6", | ||
"@angular/core": "^2.0.0-rc.6", | ||
"@angular/forms": "^2.0.0-rc.6", | ||
"@angular/http": "^2.0.0-rc.6", | ||
"@angular/platform-browser": "^2.0.0-rc.6", | ||
"@angular/platform-browser-dynamic": "^2.0.0-rc.6", | ||
"@angular/router": "^3.0.0-rc.2", | ||
"awesome-typescript-loader": "^0.19.0", | ||
@@ -50,0 +50,0 @@ "compression-webpack-plugin": "^0.3.1", |
@@ -13,26 +13,35 @@ # ng2-completer | ||
`npm install ng2-completer --save` | ||
```sh | ||
npm install ng2-completer --save | ||
``` | ||
## Usage | ||
`Http` and `forms` should be provided in the app: | ||
The module you want to use ng2-completer in must import `Ng2CompleterModule` and `FormsModule` (to use the ngModel | ||
directive on ng2-completer). `Ng2CompleterModule` provides the `CompleterService`, and declares the `ng2-completer` | ||
directive. | ||
```ts | ||
import { NgModule } from '@angular/core'; | ||
import { BrowserModule } from '@angular/platform-browser'; | ||
import { FormsModule } from "@angular/forms"; | ||
import { AppComponent } from './app.component'; | ||
import { Ng2CompleterModule } from "ng2-completer"; | ||
@NgModule({ | ||
imports: [ | ||
BrowserModule, | ||
Ng2CompleterModule, | ||
FormsModule, | ||
], | ||
declarations: [ AppComponent ], | ||
bootstrap: [ AppComponent ] | ||
}) | ||
export class AppModule { } | ||
``` | ||
import { bootstrap } from '@angular/platform-browser-dynamic'; | ||
import { disableDeprecatedForms, provideForms } from '@angular/forms'; | ||
import { AppComponent, environment } from './app/'; | ||
import {HTTP_PROVIDERS} from '@angular/http'; | ||
bootstrap(AppComponent, [ | ||
HTTP_PROVIDERS, | ||
disableDeprecatedForms(), | ||
provideForms() | ||
]); | ||
``` | ||
Add ng2-completer to your component and create a data source: | ||
``` | ||
```ts | ||
import { Component } from '@angular/core'; | ||
import {CompleterCmp, CompleterService, CompleterData, COMPLETER_DATA_PROVIDERS} from 'ng2-completer'; | ||
import { CompleterService, CompleterData } from 'ng2-completer'; | ||
@@ -42,5 +51,3 @@ @Component({ | ||
template: `<h1>Search color</h1> | ||
<ng2-completer [(ngModel)]="searchStr" [dataService]="dataService" [minSearchLength]="0"></ng2-completer>`, | ||
directives: [CompleterCmp], | ||
providers: [COMPLETER_DATA_PROVIDERS, CompleterService] | ||
<ng2-completer [(ngModel)]="searchStr" [dataService]="dataService" [minSearchLength]="0"></ng2-completer>` | ||
}) | ||
@@ -74,3 +81,3 @@ export class MyComponent { | ||
Add the following to `System.js` map configuration: | ||
``` | ||
```ts | ||
var map = { | ||
@@ -83,3 +90,3 @@ ... | ||
Add the following to `System.js` packages configuration: | ||
``` | ||
```ts | ||
var packages = { | ||
@@ -86,0 +93,0 @@ ... |
"use strict"; | ||
import {Component, Input, Output, EventEmitter, OnInit, ViewChild, Provider, forwardRef} from "@angular/core"; | ||
import {Component, Input, Output, EventEmitter, OnInit, ViewChild, forwardRef} from "@angular/core"; | ||
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms"; | ||
@@ -34,7 +34,7 @@ | ||
const COMPLETER_CONTROL_VALUE_ACCESSOR = new Provider( | ||
NG_VALUE_ACCESSOR, { | ||
useExisting: forwardRef(() => CompleterCmp), | ||
multi: true | ||
}); | ||
const COMPLETER_CONTROL_VALUE_ACCESSOR = { | ||
provide: NG_VALUE_ACCESSOR, | ||
useExisting: forwardRef(() => CompleterCmp), | ||
multi: true | ||
}; | ||
@@ -44,3 +44,2 @@ | ||
selector: "ng2-completer", | ||
directives: [CompleterListCmp], | ||
template: template, | ||
@@ -47,0 +46,0 @@ styles: [defaultStyles], |
"use strict"; | ||
import {Component, Output, Input, EventEmitter, ElementRef, AfterContentInit} from "@angular/core"; | ||
import {CompleterItem} from "./completer-item"; | ||
import {CompleterListItemCmp} from "./completer-list-item-cmp"; | ||
@@ -13,4 +12,3 @@ | ||
template: template, | ||
styles: [defaultStyles], | ||
directives: [CompleterListItemCmp] | ||
styles: [defaultStyles] | ||
}) | ||
@@ -17,0 +15,0 @@ export class CompleterListCmp implements AfterContentInit { |
@@ -1,2 +0,1 @@ | ||
import {Provider, provide} from "@angular/core"; | ||
import {Http} from "@angular/http"; | ||
@@ -6,3 +5,2 @@ | ||
import {RemoteData} from "./remote-data"; | ||
import {CompleterService} from "./completer-service"; | ||
@@ -22,6 +20,3 @@ | ||
export let COMPLETER_DATA_PROVIDERS: Provider[] = [ | ||
provide(LocalData, {useFactory: localDataFactory}), | ||
provide(RemoteData, {useFactory: remoteDataFactory, deps: [Http]}), | ||
provide(CompleterService, {useClass: CompleterService}) | ||
]; | ||
export let LocalDataFactoryProvider = {provide: LocalData, useFactory: localDataFactory}; | ||
export let RemoteDataFactoryProvider = {provide: RemoteData, useFactory: remoteDataFactory, deps: [Http]}; |
import {Http, Response} from "@angular/http"; | ||
import {Subscription} from "rxjs/Subscription"; | ||
import "rxjs/add/operator/map"; | ||
import "rxjs/add/operator/catch"; | ||
@@ -5,0 +6,0 @@ |
@@ -1,3 +0,2 @@ | ||
export {CompleterCmp} from "./components/ng2-completer/completer-cmp"; | ||
export {COMPLETER_DATA_PROVIDERS} from "./components/ng2-completer/services/completer-data-factory"; | ||
export {Ng2CompleterModule} from "./ng2-completer.module"; | ||
export {CompleterService} from "./components/ng2-completer/services/completer-service"; | ||
@@ -4,0 +3,0 @@ export {CompleterData} from "./components/ng2-completer/services/completer-data"; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
331425
41
2219
177