@kuro-samurai/ngx-samurai-filter
Version:
Filter your data with samurai filter pipe
94 lines (89 loc) • 4.29 kB
JavaScript
import * as i0 from '@angular/core';
import { Pipe } from '@angular/core';
class FilterPipe {
transform(objects, property, filterValue, filterCondition = 'equal') {
let filteredObjects = [];
for (const object of objects)
if (Object.prototype.hasOwnProperty.call(object, property))
switch (typeof filterValue) {
case 'string':
switch (filterCondition) {
case 'equal':
if (object[property] === filterValue)
filteredObjects.push(object);
break;
case 'notEqual':
if (object[property] !== filterValue)
filteredObjects.push(object);
break;
case 'include':
if (object[property].includes(filterValue))
filteredObjects.push(object);
break;
case 'notInclude':
if (!object[property].includes(filterValue))
filteredObjects.push(object);
break;
}
break;
case 'number':
switch (filterCondition) {
case 'equal':
if (object[property] === filterValue)
filteredObjects.push(object);
break;
case 'notEqual':
if (object[property] !== filterValue)
filteredObjects.push(object);
break;
case 'equal/greater':
if (object[property] >= filterValue)
filteredObjects.push(object);
break;
case 'greater':
if (object[property] > filterValue)
filteredObjects.push(object);
break;
case 'equal/lower':
if (object[property] <= filterValue)
filteredObjects.push(object);
break;
case 'lower':
if (object[property] < filterValue)
filteredObjects.push(object);
break;
}
break;
case 'boolean':
switch (filterCondition) {
case 'equal':
if (object[property] === filterValue)
filteredObjects.push(object);
break;
case 'notEqual':
if (object[property] !== filterValue)
filteredObjects.push(object);
break;
}
break;
}
return filteredObjects;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: FilterPipe, isStandalone: true, name: "SamuraiFilter" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FilterPipe, decorators: [{
type: Pipe,
args: [{
name: 'SamuraiFilter',
standalone: true,
}]
}] });
/*
* Public API Surface of filter
*/
/**
* Generated bundle index. Do not edit.
*/
export { FilterPipe };
//# sourceMappingURL=kuro-samurai-ngx-samurai-filter.mjs.map