UNPKG

input-deep-search

Version:
70 lines 8.04 kB
import * as tslib_1 from "tslib"; import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core'; import { debounce } from './decorators'; var InputSearchDirective = /** @class */ (function () { function InputSearchDirective() { this.filteredData = new EventEmitter(); } Object.defineProperty(InputSearchDirective.prototype, "searchText", { set: function (searchInput) { this.searchTextData = searchInput.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '').toLowerCase(); }, enumerable: true, configurable: true }); InputSearchDirective.prototype.onInputsearch = function (event) { var resultData = []; for (var j = 0; j < this.jsonData.length; j++) { if (this.getObject(this.jsonData[j], this.searchTextData, this.dataProperties)) { resultData.push(this.jsonData[j]); } } this.filteredData.emit(resultData); }; InputSearchDirective.prototype.getObject = function (inputObject, searchData, dataProperties) { var result = null; if (inputObject instanceof Array) { for (var i = 0; i < inputObject.length; i++) { if (this.getObject(inputObject[i], searchData, dataProperties)) { return true; } } } else { for (var prop in inputObject) { if (inputObject[prop] instanceof Object || inputObject[prop] instanceof Array) return this.getObject(inputObject[prop], searchData, dataProperties); if (dataProperties.length > 0 ? dataProperties.includes(prop) : true) { if (inputObject[prop].replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '').toLowerCase().includes(searchData)) { return true; } } } } return result; }; tslib_1.__decorate([ Input('jsonData') ], InputSearchDirective.prototype, "jsonData", void 0); tslib_1.__decorate([ Input('dataProperties') ], InputSearchDirective.prototype, "dataProperties", void 0); tslib_1.__decorate([ Input('searchText') ], InputSearchDirective.prototype, "searchText", null); tslib_1.__decorate([ Output() ], InputSearchDirective.prototype, "filteredData", void 0); tslib_1.__decorate([ HostListener('window:keyup', ['$event']), debounce() ], InputSearchDirective.prototype, "onInputsearch", null); InputSearchDirective = tslib_1.__decorate([ Directive({ selector: '[appInputSearch]' }) ], InputSearchDirective); return InputSearchDirective; }()); export { InputSearchDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lucHV0LWRlZXAtc2VhcmNoLyIsInNvdXJjZXMiOlsic3JjL2FwcC9pbnB1dC1zZWFyY2gtZGlyZWN0aXZlL2lucHV0LXNlYXJjaC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLeEM7SUFFRTtRQVFVLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVI1QixDQUFDO0lBS2pCLHNCQUFJLDRDQUFVO2FBQWQsVUFBZSxXQUFXO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3RyxDQUFDOzs7T0FBQTtJQUlELDRDQUFhLEdBQWIsVUFBYyxLQUFLO1FBQ2pCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQzdFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0Qsd0NBQVMsR0FBVCxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYztRQUMvQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBRyxXQUFXLFlBQVksS0FBSyxFQUFFO1lBQzdCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN4QyxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsRUFBRTtvQkFDN0QsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDSjtTQUNKO2FBQ0k7WUFDRCxLQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsRUFBRTtnQkFDM0IsSUFBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLO29CQUMxRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFFdkUsSUFBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUNqRSxJQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO3dCQUNoSCxPQUFPLElBQUksQ0FBQztxQkFDZjtpQkFDSjthQUNGO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBeENrQjtRQUFsQixLQUFLLENBQUMsVUFBVSxDQUFDOzBEQUFpQjtJQUNWO1FBQXhCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztnRUFBdUI7SUFFL0M7UUFEQyxLQUFLLENBQUMsWUFBWSxDQUFDOzBEQUduQjtJQUNTO1FBQVQsTUFBTSxFQUFFOzhEQUFtQztJQUc1QztRQUZDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLEVBQUU7NkRBU1Y7SUFyQlUsb0JBQW9CO1FBSGhDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxrQkFBa0I7U0FDN0IsQ0FBQztPQUNXLG9CQUFvQixDQTZDaEM7SUFBRCwyQkFBQztDQUFBLEFBN0NELElBNkNDO1NBN0NZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnLi9kZWNvcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcElucHV0U2VhcmNoXSdcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRTZWFyY2hEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG4gIHNlYXJjaFRleHREYXRhOiBzdHJpbmc7IFxuICBASW5wdXQoJ2pzb25EYXRhJykganNvbkRhdGE6IGFueVtdO1xuICBASW5wdXQoJ2RhdGFQcm9wZXJ0aWVzJykgZGF0YVByb3BlcnRpZXM6IGFueVtdO1xuICBASW5wdXQoJ3NlYXJjaFRleHQnKVxuICBzZXQgc2VhcmNoVGV4dChzZWFyY2hJbnB1dCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dERhdGEgPSBzZWFyY2hJbnB1dC5yZXBsYWNlKC9bYH4hQCMkJV4mKigpX3wrXFwtPT87OidcIiwuPD5cXHtcXH1cXFtcXF1cXFxcXFwvXS9naSwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgQE91dHB1dCgpIGZpbHRlcmVkRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwJywgWyckZXZlbnQnXSlcbiAgQGRlYm91bmNlKCkgXG4gIG9uSW5wdXRzZWFyY2goZXZlbnQpIHtcbiAgICBsZXQgcmVzdWx0RGF0YSA9IFtdO1xuICAgIGZvcih2YXIgaiA9IDA7IGo8IHRoaXMuanNvbkRhdGEubGVuZ3RoIDtqKyspIHtcbiAgICAgIGlmKHRoaXMuZ2V0T2JqZWN0KHRoaXMuanNvbkRhdGFbal0sIHRoaXMuc2VhcmNoVGV4dERhdGEsIHRoaXMuZGF0YVByb3BlcnRpZXMpKSB7XG4gICAgICAgIHJlc3VsdERhdGEucHVzaCh0aGlzLmpzb25EYXRhW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZERhdGEuZW1pdChyZXN1bHREYXRhKTtcbiAgfVxuICBnZXRPYmplY3QoaW5wdXRPYmplY3QsIHNlYXJjaERhdGEsIGRhdGFQcm9wZXJ0aWVzKSB7XG4gICAgdmFyIHJlc3VsdCA9IG51bGw7XG4gICAgaWYoaW5wdXRPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgaW5wdXRPYmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmKHRoaXMuZ2V0T2JqZWN0KGlucHV0T2JqZWN0W2ldLCBzZWFyY2hEYXRhLCBkYXRhUHJvcGVydGllcykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvcih2YXIgcHJvcCBpbiBpbnB1dE9iamVjdCkge1xuICAgICAgICAgIGlmKGlucHV0T2JqZWN0W3Byb3BdIGluc3RhbmNlb2YgT2JqZWN0IHx8IGlucHV0T2JqZWN0W3Byb3BdIGluc3RhbmNlb2YgQXJyYXkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3QoaW5wdXRPYmplY3RbcHJvcF0sIHNlYXJjaERhdGEsIGRhdGFQcm9wZXJ0aWVzKTtcblxuICAgICAgICAgIGlmKGRhdGFQcm9wZXJ0aWVzLmxlbmd0aCA+IDAgPyBkYXRhUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wKSA6IHRydWUpIHtcbiAgICAgICAgICAgICAgaWYoaW5wdXRPYmplY3RbcHJvcF0ucmVwbGFjZSgvW2B+IUAjJCVeJiooKV98K1xcLT0/OzonXCIsLjw+XFx7XFx9XFxbXFxdXFxcXFxcL10vZ2ksICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaERhdGEpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=