@intzi1992/mat-table-filter
Version:
Provides filtering support for @angular/material tables
37 lines • 4.89 kB
JavaScript
import { MatTableFilter } from '../mat-table-filter.enum';
import isString from 'lodash-es/isString';
export class FilterPredicate {
executeCondition(itemPair, options) {
this.handleLetterCasing(itemPair, options.caseSensitive);
switch (options.filterType) {
case MatTableFilter.EQUALS:
return this.equals(itemPair);
case MatTableFilter.ANYWHERE:
return this.anywhere(itemPair);
case MatTableFilter.STARTS_WITH:
return this.startsWith(itemPair);
case MatTableFilter.ENDS_WITH:
return this.endsWith(itemPair);
default:
return true;
}
}
handleLetterCasing(itemPair, caseSensitive) {
if (!caseSensitive) {
this.transformAllLowerCase(itemPair);
}
}
transformAllLowerCase(object) {
// tslint:disable-next-line:forin
for (const key in object) {
const value = object[key];
if (isString(value)) {
object[key] = value.toLowerCase();
}
else {
this.transformAllLowerCase(value);
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXByZWRpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdC10YWJsZS1maWx0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9maWx0ZXItcHJlZGljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLFFBQVEsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxNQUFNLE9BQWdCLGVBQWU7SUFPNUIsZ0JBQWdCLENBQUMsUUFBcUIsRUFBRSxPQUFnQjtRQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxRQUFRLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMzQixLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssY0FBYyxDQUFDLFdBQVc7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxLQUFLLGNBQWMsQ0FBQyxTQUFTO2dCQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakM7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUF1QixFQUFFLGFBQXVCO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFXO1FBQ3ZDLGlDQUFpQztRQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRUYWJsZUZpbHRlciB9IGZyb20gJy4uL21hdC10YWJsZS1maWx0ZXIuZW51bSc7XG5pbXBvcnQgeyBJdGVtUGFpciB9IGZyb20gJy4uL2l0ZW0tcGFpcic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoLWVzL2lzU3RyaW5nJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICcuLi9vcHRpb25zJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbHRlclByZWRpY2F0ZTxUPiB7XG5cbiAgcHVibGljIGFic3RyYWN0IGVxdWFscyhpdGVtUGFpcjogSXRlbVBhaXI8VD4pOiBib29sZWFuO1xuICBwdWJsaWMgYWJzdHJhY3QgYW55d2hlcmUoaXRlbVBhaXI6IEl0ZW1QYWlyPFQ+KTogYm9vbGVhbjtcbiAgcHVibGljIGFic3RyYWN0IHN0YXJ0c1dpdGgoaXRlbVBhaXI6IEl0ZW1QYWlyPFQ+KTogYm9vbGVhbjtcbiAgcHVibGljIGFic3RyYWN0IGVuZHNXaXRoKGl0ZW1QYWlyOiBJdGVtUGFpcjxUPik6IGJvb2xlYW47XG5cbiAgcHVibGljIGV4ZWN1dGVDb25kaXRpb24oaXRlbVBhaXI6IEl0ZW1QYWlyPFQ+LCBvcHRpb25zOiBPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgdGhpcy5oYW5kbGVMZXR0ZXJDYXNpbmcoaXRlbVBhaXIsIG9wdGlvbnMuY2FzZVNlbnNpdGl2ZSk7XG4gICAgc3dpdGNoIChvcHRpb25zLmZpbHRlclR5cGUpIHtcbiAgICAgIGNhc2UgTWF0VGFibGVGaWx0ZXIuRVFVQUxTOlxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMoaXRlbVBhaXIpO1xuICAgICAgY2FzZSBNYXRUYWJsZUZpbHRlci5BTllXSEVSRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuYW55d2hlcmUoaXRlbVBhaXIpO1xuICAgICAgY2FzZSBNYXRUYWJsZUZpbHRlci5TVEFSVFNfV0lUSDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aChpdGVtUGFpcik7XG4gICAgICBjYXNlIE1hdFRhYmxlRmlsdGVyLkVORFNfV0lUSDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5kc1dpdGgoaXRlbVBhaXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMZXR0ZXJDYXNpbmcoaXRlbVBhaXI6IEl0ZW1QYWlyPGFueT4sIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybUFsbExvd2VyQ2FzZShpdGVtUGFpcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BbGxMb3dlckNhc2Uob2JqZWN0OiBhbnkpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQWxsTG93ZXJDYXNlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==