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