input-deep-search
Version:
1.Use npm to install the package
65 lines • 7.65 kB
JavaScript
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==