@intzi1992/mat-table-filter
Version:
Provides filtering support for @angular/material tables
1 lines • 21.7 kB
Source Map (JSON)
{"version":3,"file":"intzi1992-mat-table-filter.mjs","sources":["../../../projects/mat-table-filter/src/lib/mat-table-filter.enum.ts","../../../projects/mat-table-filter/src/lib/services/filter-predicate.ts","../../../projects/mat-table-filter/src/lib/services/alpha-numeric-predicate.service.ts","../../../projects/mat-table-filter/src/lib/services/array-predicate.service.ts","../../../projects/mat-table-filter/src/lib/services/mat-table-filter.service.ts","../../../projects/mat-table-filter/src/lib/mat-table-filter.directive.ts","../../../projects/mat-table-filter/src/lib/mat-table-filter.module.ts","../../../projects/mat-table-filter/src/public-api.ts","../../../projects/mat-table-filter/src/intzi1992-mat-table-filter.ts"],"sourcesContent":["export enum MatTableFilter {\n EQUALS = 'EQUALS',\n ANYWHERE = 'ANYWHERE',\n STARTS_WITH = 'STARTS_WITH',\n ENDS_WITH = 'ENDS_WITH'\n}\n","import { MatTableFilter } from '../mat-table-filter.enum';\nimport { ItemPair } from '../item-pair';\nimport isString from 'lodash-es/isString';\nimport { Options } from '../options';\n\nexport abstract class FilterPredicate<T> {\n\n public abstract equals(itemPair: ItemPair<T>): boolean;\n public abstract anywhere(itemPair: ItemPair<T>): boolean;\n public abstract startsWith(itemPair: ItemPair<T>): boolean;\n public abstract endsWith(itemPair: ItemPair<T>): boolean;\n\n public executeCondition(itemPair: ItemPair<T>, options: Options): boolean {\n this.handleLetterCasing(itemPair, options.caseSensitive);\n switch (options.filterType) {\n case MatTableFilter.EQUALS:\n return this.equals(itemPair);\n case MatTableFilter.ANYWHERE:\n return this.anywhere(itemPair);\n case MatTableFilter.STARTS_WITH:\n return this.startsWith(itemPair);\n case MatTableFilter.ENDS_WITH:\n return this.endsWith(itemPair);\n default:\n return true;\n }\n }\n\n private handleLetterCasing(itemPair: ItemPair<any>, caseSensitive?: boolean): void {\n if (!caseSensitive) {\n this.transformAllLowerCase(itemPair);\n }\n }\n\n private transformAllLowerCase(object: any) {\n // tslint:disable-next-line:forin\n for (const key in object) {\n const value = object[key];\n if (isString(value)) {\n object[key] = value.toLowerCase();\n } else {\n this.transformAllLowerCase(value);\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterPredicate } from './filter-predicate';\nimport { ItemPair } from '../item-pair';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlphaNumericPredicateService extends FilterPredicate<string> {\n\n constructor() {\n super();\n }\n\n public equals(itemPair: ItemPair<string>): boolean {\n return itemPair.example === itemPair.item;\n }\n public anywhere(itemPair: ItemPair<string>): boolean {\n return itemPair.item.includes(itemPair.example);\n }\n public startsWith(itemPair: ItemPair<string>): boolean {\n return itemPair.item.startsWith(itemPair.example);\n }\n public endsWith(itemPair: ItemPair<string>): boolean {\n return itemPair.item.endsWith(itemPair.example);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { FilterPredicate } from './filter-predicate';\nimport isEqual from 'lodash-es/isEqual';\nimport difference from 'lodash-es/difference';\nimport flatten from 'lodash-es/flatten';\nimport { ItemPair } from '../item-pair';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ArrayPredicateService extends FilterPredicate<Array<any>> {\n\n // tslint:disable-next-line:max-line-length\n private static readonly UNSUPPORTED_OPERATION_WARNING = 'This filterType is unsupported for array filtering. FilterType.ANYWHERE is executed instead!';\n private static readonly SUGGESTION_WARNING = 'You can set a custom predicate for the array property through PropertyOptions!';\n constructor() {\n super();\n }\n\n private static warn() {\n console.warn(ArrayPredicateService.UNSUPPORTED_OPERATION_WARNING);\n console.warn(ArrayPredicateService.SUGGESTION_WARNING);\n }\n\n public equals(itemPair: ItemPair<Array<any>>): boolean {\n return isEqual(itemPair.example.sort(), itemPair.item.sort());\n }\n public anywhere(itemPair: ItemPair<Array<any>>): boolean {\n return this.isSubset(itemPair.example, itemPair.item);\n }\n public startsWith(itemPair: ItemPair<Array<any>>): boolean {\n ArrayPredicateService.warn();\n return this.anywhere(itemPair);\n }\n public endsWith(itemPair: ItemPair<Array<any>>): boolean {\n ArrayPredicateService.warn();\n return this.anywhere(itemPair);\n }\n\n private isSubset(example: Array<any>, item: Array<any>): boolean {\n return !difference(flatten(example), flatten(item)).length;\n }\n\n}\n","import { PropertyOptions, PredicateFunc } from '../property-options';\nimport { ItemPair } from './../item-pair';\nimport { ArrayPredicateService } from './array-predicate.service';\nimport { AlphaNumericPredicateService } from './alpha-numeric-predicate.service';\nimport { Injectable } from '@angular/core';\nimport isEqual from 'lodash-es/isEqual';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport isNil from 'lodash-es/isNil';\nimport every from 'lodash-es/every';\nimport isFunction from 'lodash-es/isFunction';\nimport isArray from 'lodash-es/isArray';\nimport isBoolean from 'lodash-es/isBoolean';\nimport isString from 'lodash-es/isString';\nimport isNumber from 'lodash-es/isNumber';\nimport isEmpty from 'lodash-es/isEmpty';\nimport { Options } from '../options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatTableFilterService {\n constructor(private _alphaNumericService: AlphaNumericPredicateService, private _arrayService: ArrayPredicateService) {}\n\n public filterPredicate(itemPair: ItemPair<any>, propertyOptions: PropertyOptions,\n commonOptions: Options | PredicateFunc, propertyName?: string): boolean {\n // tslint:disable-next-line:forin\n const exampleKeys = Object.keys(itemPair.example);\n for (const key of exampleKeys) {\n const exampleValue = cloneDeep(itemPair.example[key]);\n if (isNil(exampleValue) || every(exampleValue, isEmpty) && typeof exampleValue !== 'boolean') {\n // if example entity's property is undefined/null/empty then it means the caller wants all the data\n continue;\n }\n if (itemPair.item?.hasOwnProperty(key)) {\n // if example entity has additional columns then search fails\n const itemValue = cloneDeep(itemPair.item[key]);\n const nextPropertyName = this.getNextPropertyName(key, propertyName);\n const options = this.finalizeOptionsForProperty(commonOptions, propertyOptions, nextPropertyName);\n if (isFunction(options)) { // if user defined predicate is present for property\n const customPredicate = options as PredicateFunc;\n if (!customPredicate(itemValue)) {\n return false;\n }\n } else {\n const columnOptions = options as Options;\n if (this.isAlphaNumeric(itemValue)) {\n const valuePair: ItemPair<string> = {item: itemValue.toString(), example: exampleValue};\n if (!this._alphaNumericService.executeCondition(valuePair, columnOptions)) {\n return false;\n }\n } else if (isArray(itemValue)) {\n const valuePair: ItemPair<any[]> = {item: itemValue, example: exampleValue};\n if (!this._arrayService.executeCondition(valuePair, columnOptions)) {\n return false;\n }\n } else if (isBoolean(itemValue)) {\n if (itemValue !== exampleValue) {\n return false;\n }\n } else {\n const valuePair: ItemPair<any> = {item: itemValue, example: exampleValue};\n if (!this.filterPredicate(valuePair, propertyOptions, options, nextPropertyName)) {\n // if one of the inner properties returns true, this shouldnt affect the whole item's filtering\n // however if it returns false then the item must not be in the list\n return false;\n }\n }\n }\n } else {\n return false;\n }\n }\n return true;\n }\n\n private finalizeOptionsForProperty(commonOptions: Options | PredicateFunc, propertyOptions: PropertyOptions, propertyName: string):\n Options | PredicateFunc {\n if (propertyOptions && propertyOptions.hasOwnProperty(propertyName)) {\n return propertyOptions[propertyName];\n } else {\n return commonOptions;\n }\n }\n\n private getNextPropertyName(key: string, propertyName?: string): string {\n return propertyName ? (propertyName + '.' + key) : key;\n }\n\n public isChanged(oldEntity: any, newEntity: any): boolean {\n return !isEqual(this.toPlainJson(oldEntity), this.toPlainJson(newEntity));\n }\n\n public toPlainJson(object?: any): JSON | null {\n if (!object)\n return null;\n return JSON.parse(JSON.stringify(object));\n }\n\n private isAlphaNumeric(value: any): boolean {\n return isString(value) || isNumber(value);\n }\n}\n","import { PropertyOptions } from './property-options';\nimport { Directive, DoCheck, Input, Host, Self, Optional } from '@angular/core';\nimport { MatTable, MatTableDataSource } from '@angular/material/table';\nimport { BehaviorSubject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { MatTableFilter } from './mat-table-filter.enum';\nimport { MatTableFilterService } from './services/mat-table-filter.service';\n\n@Directive({\n selector: '[matTableFilter]',\n exportAs: 'matTableFilter'\n})\nexport class MatTableFilterDirective implements DoCheck {\n private _oldExampleEntity: any;\n\n @Input() exampleEntity: any;\n\n /**\n * in millis\n */\n @Input() debounceTime = 400;\n @Input() filterType: MatTableFilter = MatTableFilter.ANYWHERE;\n @Input() caseSensitive = false;\n @Input() customPredicate: (data: any) => boolean;\n @Input() propertyOptions: PropertyOptions;\n private _exampleEntitySubject: BehaviorSubject<void>;\n\n\n constructor(\n private _filterService: MatTableFilterService,\n @Host() @Self() @Optional() private _table: MatTable<any>\n ) {\n this.initDebounceSubject();\n }\n\n ngDoCheck(): void {\n if (this._filterService.isChanged(this._oldExampleEntity, this.exampleEntity)) {\n this._oldExampleEntity = this._filterService.toPlainJson(this.exampleEntity);\n this._exampleEntitySubject.next(undefined);\n }\n }\n\n\n private initDebounceSubject() {\n this._exampleEntitySubject = new BehaviorSubject<void>(undefined);\n this._exampleEntitySubject.pipe(\n debounceTime(this.debounceTime))\n .subscribe(_ => {\n this.updateFilterPredicate();\n });\n }\n\n private updateFilterPredicate() {\n const matDataSource = this.getMatDataSource();\n if (matDataSource) {\n matDataSource.filterPredicate = this.getFilterPredicate();\n matDataSource.filter = this.exampleEntity as any;\n }\n }\n\n private getFilterPredicate() {\n if (this.customPredicate) {\n return this.customPredicate;\n } else {\n return (item: any): boolean => {\n return this._filterService.filterPredicate({ example: this.exampleEntity, item }, this.propertyOptions,\n { filterType: this.filterType, caseSensitive: this.caseSensitive });\n };\n }\n }\n\n private getMatDataSource(): MatTableDataSource<any> {\n const matTable = this._table as MatTable<any>;\n return (matTable.dataSource as MatTableDataSource<any>);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTableFilterDirective } from './mat-table-filter.directive';\n\n@NgModule({\n declarations: [MatTableFilterDirective],\n imports: [\n MatTableModule\n ],\n exports: [MatTableFilterDirective]\n})\nexport class MatTableFilterModule { }\n","/*\n * Public API Surface of mat-table-filter\n */\n\nexport * from './lib/mat-table-filter.module';\nexport { MatTableFilterService } from './lib/services/mat-table-filter.service';\nexport { MatTableFilter } from './lib/mat-table-filter.enum';\nexport { Options } from './lib/options';\nexport * from './lib/property-options';\nexport { MatTableFilterDirective } from './lib/mat-table-filter.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlphaNumericPredicateService","i2.ArrayPredicateService","i1.MatTableFilterService"],"mappings":"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"}