UNPKG

input-deep-search

Version:
65 lines 7.65 kB
import * as tslib_1 from "tslib"; import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core'; import { debounce } from './decorators'; let InputSearchDirective = class InputSearchDirective { constructor() { this.filteredData = new EventEmitter(); } set searchText(searchInput) { this.searchTextData = searchInput.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '').toLowerCase(); } onInputsearch(event) { let 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); } getObject(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); export { InputSearchDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lucHV0LWRlZXAtc2VhcmNoLyIsInNvdXJjZXMiOlsic3JjL2FwcC9pbnB1dC1zZWFyY2gtZGlyZWN0aXZlL2lucHV0LXNlYXJjaC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLeEMsSUFBYSxvQkFBb0IsR0FBakMsTUFBYSxvQkFBb0I7SUFFL0I7UUFRVSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFSNUIsQ0FBQztJQUtqQixJQUFJLFVBQVUsQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3RyxDQUFDO0lBSUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDN0UsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxTQUFTLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjO1FBQy9DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFHLFdBQVcsWUFBWSxLQUFLLEVBQUU7WUFDN0IsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUFFO29CQUM3RCxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNKO1NBQ0o7YUFDSTtZQUNELEtBQUksSUFBSSxJQUFJLElBQUksV0FBVyxFQUFFO2dCQUMzQixJQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUs7b0JBQzFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUV2RSxJQUFHLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2pFLElBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQ2hILE9BQU8sSUFBSSxDQUFDO3FCQUNmO2lCQUNKO2FBQ0Y7U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFBO0FBekNvQjtJQUFsQixLQUFLLENBQUMsVUFBVSxDQUFDO3NEQUFpQjtBQUNWO0lBQXhCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs0REFBdUI7QUFFL0M7SUFEQyxLQUFLLENBQUMsWUFBWSxDQUFDO3NEQUduQjtBQUNTO0lBQVQsTUFBTSxFQUFFOzBEQUFtQztBQUc1QztJQUZDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxRQUFRLEVBQUU7eURBU1Y7QUFyQlUsb0JBQW9CO0lBSGhDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxrQkFBa0I7S0FDN0IsQ0FBQztHQUNXLG9CQUFvQixDQTZDaEM7U0E3Q1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwSW5wdXRTZWFyY2hdJ1xufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFNlYXJjaERpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbiAgc2VhcmNoVGV4dERhdGE6IHN0cmluZzsgXG4gIEBJbnB1dCgnanNvbkRhdGEnKSBqc29uRGF0YTogYW55W107XG4gIEBJbnB1dCgnZGF0YVByb3BlcnRpZXMnKSBkYXRhUHJvcGVydGllczogYW55W107XG4gIEBJbnB1dCgnc2VhcmNoVGV4dCcpXG4gIHNldCBzZWFyY2hUZXh0KHNlYXJjaElucHV0KSB7XG4gICAgdGhpcy5zZWFyY2hUZXh0RGF0YSA9IHNlYXJjaElucHV0LnJlcGxhY2UoL1tgfiFAIyQlXiYqKClffCtcXC09Pzs6J1wiLC48Plxce1xcfVxcW1xcXVxcXFxcXC9dL2dpLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICBAT3V0cHV0KCkgZmlsdGVyZWREYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAnLCBbJyRldmVudCddKVxuICBAZGVib3VuY2UoKSBcbiAgb25JbnB1dHNlYXJjaChldmVudCkge1xuICAgIGxldCByZXN1bHREYXRhID0gW107XG4gICAgZm9yKHZhciBqID0gMDsgajwgdGhpcy5qc29uRGF0YS5sZW5ndGggO2orKykge1xuICAgICAgaWYodGhpcy5nZXRPYmplY3QodGhpcy5qc29uRGF0YVtqXSwgdGhpcy5zZWFyY2hUZXh0RGF0YSwgdGhpcy5kYXRhUHJvcGVydGllcykpIHtcbiAgICAgICAgcmVzdWx0RGF0YS5wdXNoKHRoaXMuanNvbkRhdGFbal0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkRGF0YS5lbWl0KHJlc3VsdERhdGEpO1xuICB9XG4gIGdldE9iamVjdChpbnB1dE9iamVjdCwgc2VhcmNoRGF0YSwgZGF0YVByb3BlcnRpZXMpIHtcbiAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICBpZihpbnB1dE9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBpbnB1dE9iamVjdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYodGhpcy5nZXRPYmplY3QoaW5wdXRPYmplY3RbaV0sIHNlYXJjaERhdGEsIGRhdGFQcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm9yKHZhciBwcm9wIGluIGlucHV0T2JqZWN0KSB7XG4gICAgICAgICAgaWYoaW5wdXRPYmplY3RbcHJvcF0gaW5zdGFuY2VvZiBPYmplY3QgfHwgaW5wdXRPYmplY3RbcHJvcF0gaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdChpbnB1dE9iamVjdFtwcm9wXSwgc2VhcmNoRGF0YSwgZGF0YVByb3BlcnRpZXMpO1xuXG4gICAgICAgICAgaWYoZGF0YVByb3BlcnRpZXMubGVuZ3RoID4gMCA/IGRhdGFQcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3ApIDogdHJ1ZSkge1xuICAgICAgICAgICAgICBpZihpbnB1dE9iamVjdFtwcm9wXS5yZXBsYWNlKC9bYH4hQCMkJV4mKigpX3wrXFwtPT87OidcIiwuPD5cXHtcXH1cXFtcXF1cXFxcXFwvXS9naSwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoRGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==