UNPKG

kwikui

Version:

KwikID's UI Component Library in Angular

62 lines 7.03 kB
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=