UNPKG

@intzi1992/mat-table-filter

Version:

Provides filtering support for @angular/material tables

44 lines 6.07 kB
import { Injectable } from '@angular/core'; import { FilterPredicate } from './filter-predicate'; import isEqual from 'lodash-es/isEqual'; import difference from 'lodash-es/difference'; import flatten from 'lodash-es/flatten'; import * as i0 from "@angular/core"; export class ArrayPredicateService extends FilterPredicate { // tslint:disable-next-line:max-line-length static { this.UNSUPPORTED_OPERATION_WARNING = 'This filterType is unsupported for array filtering. FilterType.ANYWHERE is executed instead!'; } static { this.SUGGESTION_WARNING = 'You can set a custom predicate for the array property through PropertyOptions!'; } constructor() { super(); } static warn() { console.warn(ArrayPredicateService.UNSUPPORTED_OPERATION_WARNING); console.warn(ArrayPredicateService.SUGGESTION_WARNING); } equals(itemPair) { return isEqual(itemPair.example.sort(), itemPair.item.sort()); } anywhere(itemPair) { return this.isSubset(itemPair.example, itemPair.item); } startsWith(itemPair) { ArrayPredicateService.warn(); return this.anywhere(itemPair); } endsWith(itemPair) { ArrayPredicateService.warn(); return this.anywhere(itemPair); } isSubset(example, item) { return !difference(flatten(example), flatten(item)).length; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArrayPredicateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArrayPredicateService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArrayPredicateService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktcHJlZGljYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXQtdGFibGUtZmlsdGVyL3NyYy9saWIvc2VydmljZXMvYXJyYXktcHJlZGljYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7O0FBTXhDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUEyQjtJQUVwRSwyQ0FBMkM7YUFDbkIsa0NBQTZCLEdBQUcsOEZBQThGLEFBQWpHLENBQWtHO2FBQy9ILHVCQUFrQixHQUFHLGdGQUFnRixBQUFuRixDQUFvRjtJQUM5SDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUE4QjtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ00sUUFBUSxDQUFDLFFBQThCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ00sVUFBVSxDQUFDLFFBQThCO1FBQzlDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ00sUUFBUSxDQUFDLFFBQThCO1FBQzVDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQW1CLEVBQUUsSUFBZ0I7UUFDcEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdELENBQUM7K0dBL0JVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJQcmVkaWNhdGUgfSBmcm9tICcuL2ZpbHRlci1wcmVkaWNhdGUnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLWVzL2lzRXF1YWwnO1xuaW1wb3J0IGRpZmZlcmVuY2UgZnJvbSAnbG9kYXNoLWVzL2RpZmZlcmVuY2UnO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoLWVzL2ZsYXR0ZW4nO1xuaW1wb3J0IHsgSXRlbVBhaXIgfSBmcm9tICcuLi9pdGVtLXBhaXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcnJheVByZWRpY2F0ZVNlcnZpY2UgZXh0ZW5kcyBGaWx0ZXJQcmVkaWNhdGU8QXJyYXk8YW55Pj4ge1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5TVVBQT1JURURfT1BFUkFUSU9OX1dBUk5JTkcgPSAnVGhpcyBmaWx0ZXJUeXBlIGlzIHVuc3VwcG9ydGVkIGZvciBhcnJheSBmaWx0ZXJpbmcuIEZpbHRlclR5cGUuQU5ZV0hFUkUgaXMgZXhlY3V0ZWQgaW5zdGVhZCEnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTVUdHRVNUSU9OX1dBUk5JTkcgPSAnWW91IGNhbiBzZXQgYSBjdXN0b20gcHJlZGljYXRlIGZvciB0aGUgYXJyYXkgcHJvcGVydHkgdGhyb3VnaCBQcm9wZXJ0eU9wdGlvbnMhJztcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHdhcm4oKSB7XG4gICAgY29uc29sZS53YXJuKEFycmF5UHJlZGljYXRlU2VydmljZS5VTlNVUFBPUlRFRF9PUEVSQVRJT05fV0FSTklORyk7XG4gICAgY29uc29sZS53YXJuKEFycmF5UHJlZGljYXRlU2VydmljZS5TVUdHRVNUSU9OX1dBUk5JTkcpO1xuICB9XG5cbiAgcHVibGljIGVxdWFscyhpdGVtUGFpcjogSXRlbVBhaXI8QXJyYXk8YW55Pj4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNFcXVhbChpdGVtUGFpci5leGFtcGxlLnNvcnQoKSwgaXRlbVBhaXIuaXRlbS5zb3J0KCkpO1xuICB9XG4gIHB1YmxpYyBhbnl3aGVyZShpdGVtUGFpcjogSXRlbVBhaXI8QXJyYXk8YW55Pj4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1N1YnNldChpdGVtUGFpci5leGFtcGxlLCBpdGVtUGFpci5pdGVtKTtcbiAgfVxuICBwdWJsaWMgc3RhcnRzV2l0aChpdGVtUGFpcjogSXRlbVBhaXI8QXJyYXk8YW55Pj4pOiBib29sZWFuIHtcbiAgICBBcnJheVByZWRpY2F0ZVNlcnZpY2Uud2FybigpO1xuICAgIHJldHVybiB0aGlzLmFueXdoZXJlKGl0ZW1QYWlyKTtcbiAgfVxuICBwdWJsaWMgZW5kc1dpdGgoaXRlbVBhaXI6IEl0ZW1QYWlyPEFycmF5PGFueT4+KTogYm9vbGVhbiB7XG4gICAgQXJyYXlQcmVkaWNhdGVTZXJ2aWNlLndhcm4oKTtcbiAgICByZXR1cm4gdGhpcy5hbnl3aGVyZShpdGVtUGFpcik7XG4gIH1cblxuICBwcml2YXRlIGlzU3Vic2V0KGV4YW1wbGU6IEFycmF5PGFueT4sIGl0ZW06IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWRpZmZlcmVuY2UoZmxhdHRlbihleGFtcGxlKSwgZmxhdHRlbihpdGVtKSkubGVuZ3RoO1xuICB9XG5cbn1cbiJdfQ==