kwikui
Version:
KwikID's UI Component Library in Angular
62 lines • 7.03 kB
JavaScript
import { Injectable, Pipe } from "@angular/core";
import * as i0 from "@angular/core";
export class KwikUISearchFilterPipe {
/**
* @param items object from array
* @param term term's search
* @param excludes array of strings which will ignored during search
*/
transform(items, term, excludes = []) {
if (!term || !items)
return items;
return KwikUISearchFilterPipe.filter(items, term, excludes);
}
/**
*
* @param items List of items to filter
* @param term a string term to compare with every property of the list
* @param excludes List of keys which will be ignored during search
*
*/
static filter(items, term, excludes) {
const toCompare = term.toLowerCase();
function checkInside(item, term) {
if (typeof item === "string" &&
item.toString().toLowerCase().includes(toCompare)) {
return true;
}
for (const property in item) {
if (item[property] === null ||
item[property] == undefined ||
excludes.includes(property)) {
continue;
}
if (typeof item[property] === "object") {
if (checkInside(item[property], term)) {
return true;
}
}
else if (item[property].toString().toLowerCase().includes(toCompare)) {
return true;
}
}
return false;
}
return items.filter((item) => {
return checkInside(item, term);
});
}
}
/** @nocollapse */ KwikUISearchFilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUISearchFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
/** @nocollapse */ KwikUISearchFilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUISearchFilterPipe, name: "kwikuiSearchFilter", pure: false });
/** @nocollapse */ KwikUISearchFilterPipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUISearchFilterPipe });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUISearchFilterPipe, decorators: [{
type: Pipe,
args: [{
name: "kwikuiSearchFilter",
pure: false
}]
}, {
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvcGlwZXMvc2VhcmNoLWZpbHRlci9zZWFyY2gtZmlsdGVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9oRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxXQUFnQixFQUFFO1FBQ3BELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEMsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FDWCxLQUFvQyxFQUNwQyxJQUFZLEVBQ1osUUFBYTtRQUViLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxTQUFTLFdBQVcsQ0FBQyxJQUFTLEVBQUUsSUFBWTtZQUMxQyxJQUNFLE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ2pEO2dCQUNBLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksRUFBRTtnQkFDM0IsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSTtvQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7b0JBQzNCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQzNCO29CQUNBLFNBQVM7aUJBQ1Y7Z0JBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7b0JBQ3RDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRTt3QkFDckMsT0FBTyxJQUFJLENBQUM7cUJBQ2I7aUJBQ0Y7cUJBQU0sSUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUMzRDtvQkFDQSxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUlBMURVLHNCQUFzQjtxSUFBdEIsc0JBQXNCOzJJQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFMbEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixJQUFJLEVBQUUsS0FBSztpQkFDWjs7a0JBQ0EsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AUGlwZSh7XG4gIG5hbWU6IFwia3dpa3VpU2VhcmNoRmlsdGVyXCIsXG4gIHB1cmU6IGZhbHNlXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEt3aWtVSVNlYXJjaEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtcyBvYmplY3QgZnJvbSBhcnJheVxuICAgKiBAcGFyYW0gdGVybSB0ZXJtJ3Mgc2VhcmNoXG4gICAqIEBwYXJhbSBleGNsdWRlcyBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIHdpbGwgaWdub3JlZCBkdXJpbmcgc2VhcmNoXG4gICAqL1xuICB0cmFuc2Zvcm0oaXRlbXM6IGFueSwgdGVybTogc3RyaW5nLCBleGNsdWRlczogYW55ID0gW10pOiBhbnkge1xuICAgIGlmICghdGVybSB8fCAhaXRlbXMpIHJldHVybiBpdGVtcztcblxuICAgIHJldHVybiBLd2lrVUlTZWFyY2hGaWx0ZXJQaXBlLmZpbHRlcihpdGVtcywgdGVybSwgZXhjbHVkZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtcyBMaXN0IG9mIGl0ZW1zIHRvIGZpbHRlclxuICAgKiBAcGFyYW0gdGVybSAgYSBzdHJpbmcgdGVybSB0byBjb21wYXJlIHdpdGggZXZlcnkgcHJvcGVydHkgb2YgdGhlIGxpc3RcbiAgICogQHBhcmFtIGV4Y2x1ZGVzIExpc3Qgb2Yga2V5cyB3aGljaCB3aWxsIGJlIGlnbm9yZWQgZHVyaW5nIHNlYXJjaFxuICAgKlxuICAgKi9cbiAgc3RhdGljIGZpbHRlcihcbiAgICBpdGVtczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4sXG4gICAgdGVybTogc3RyaW5nLFxuICAgIGV4Y2x1ZGVzOiBhbnlcbiAgKTogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4ge1xuICAgIGNvbnN0IHRvQ29tcGFyZSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5zaWRlKGl0ZW06IGFueSwgdGVybTogc3RyaW5nKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgIGl0ZW0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRvQ29tcGFyZSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBpdGVtKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtW3Byb3BlcnR5XSA9PT0gbnVsbCB8fFxuICAgICAgICAgIGl0ZW1bcHJvcGVydHldID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIGV4Y2x1ZGVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bcHJvcGVydHldID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgaWYgKGNoZWNrSW5zaWRlKGl0ZW1bcHJvcGVydHldLCB0ZXJtKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGl0ZW1bcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0b0NvbXBhcmUpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrSW5zaWRlKGl0ZW0sIHRlcm0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=