@kuro-samurai/ngx-samurai-filter
Version:
Filter your data with samurai filter pipe
83 lines • 10.6 kB
JavaScript
import { Pipe } from '@angular/core';
import * as i0 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" }); }
}
export { FilterPipe };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FilterPipe, decorators: [{
type: Pipe,
args: [{
name: 'SamuraiFilter',
standalone: true,
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWx0ZXIvc3JjL2xpYi9maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFFcEQsTUFJYSxVQUFVO0lBQ3RCLFNBQVMsQ0FDUixPQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsV0FBc0MsRUFDdEMsa0JBQTJILE9BQU87UUFFbEksSUFBSSxlQUFlLEdBQVUsRUFBRSxDQUFDO1FBRWhDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTztZQUMzQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2dCQUN6RCxRQUFRLE9BQU8sV0FBVyxFQUFFO29CQUMzQixLQUFLLFFBQVE7d0JBQ1osUUFBUSxlQUFlLEVBQUU7NEJBQ3hCLEtBQUssT0FBTztnQ0FDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXO29DQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ25FLE1BQU07NEJBRVAsS0FBSyxVQUFVO2dDQUNkLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVc7b0NBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQ0FDbkUsTUFBTTs0QkFFUCxLQUFLLFNBQVM7Z0NBQ2IsSUFBSyxNQUFNLENBQUMsUUFBUSxDQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztvQ0FBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUNyRixNQUFNOzRCQUVQLEtBQUssWUFBWTtnQ0FDaEIsSUFBSSxDQUFFLE1BQU0sQ0FBQyxRQUFRLENBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO29DQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ3RGLE1BQU07eUJBQ1A7d0JBQ0QsTUFBTTtvQkFFUCxLQUFLLFFBQVE7d0JBQ1osUUFBUSxlQUFlLEVBQUU7NEJBQ3hCLEtBQUssT0FBTztnQ0FDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXO29DQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ25FLE1BQU07NEJBRVAsS0FBSyxVQUFVO2dDQUNkLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVc7b0NBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQ0FDbkUsTUFBTTs0QkFFUCxLQUFLLGVBQWU7Z0NBQ25CLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVc7b0NBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQ0FDbEUsTUFBTTs0QkFFUCxLQUFLLFNBQVM7Z0NBQ2IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVztvQ0FBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUNqRSxNQUFNOzRCQUVQLEtBQUssYUFBYTtnQ0FDakIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVztvQ0FBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dDQUNsRSxNQUFNOzRCQUVQLEtBQUssT0FBTztnQ0FDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXO29DQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ2pFLE1BQU07eUJBQ1A7d0JBQ0QsTUFBTTtvQkFFUCxLQUFLLFNBQVM7d0JBQ2IsUUFBUSxlQUFlLEVBQUU7NEJBQ3hCLEtBQUssT0FBTztnQ0FDWCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXO29DQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ25FLE1BQU07NEJBRVAsS0FBSyxVQUFVO2dDQUNkLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVc7b0NBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQ0FDbkUsTUFBTTt5QkFDUDt3QkFDRCxNQUFNO2lCQUNQO1FBRUgsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQzs4R0ExRVcsVUFBVTs0R0FBVixVQUFVOztTQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFKdEIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICdTYW11cmFpRmlsdGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXHR0cmFuc2Zvcm0oXG5cdFx0b2JqZWN0czogYW55W10sXG5cdFx0cHJvcGVydHk6IHN0cmluZyxcblx0XHRmaWx0ZXJWYWx1ZTogYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyxcblx0XHRmaWx0ZXJDb25kaXRpb246ICdlcXVhbCcgfCAnbm90RXF1YWwnIHwgJ2luY2x1ZGUnIHwgJ25vdEluY2x1ZGUnIHwgJ2VxdWFsL2dyZWF0ZXInIHwgJ2VxdWFsL2xvd2VyJyB8ICdncmVhdGVyJyB8ICdsb3dlcicgPSAnZXF1YWwnXG5cdCk6IGFueVtdIHtcblx0XHRsZXQgZmlsdGVyZWRPYmplY3RzOiBhbnlbXSA9IFtdO1xuXG5cdFx0Zm9yIChjb25zdCBvYmplY3Qgb2Ygb2JqZWN0cylcblx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSkpXG5cdFx0XHRcdHN3aXRjaCAodHlwZW9mIGZpbHRlclZhbHVlKSB7XG5cdFx0XHRcdFx0Y2FzZSAnc3RyaW5nJzpcblx0XHRcdFx0XHRcdHN3aXRjaCAoZmlsdGVyQ29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2VxdWFsJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSA9PT0gZmlsdGVyVmFsdWUpIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSAnbm90RXF1YWwnOlxuXHRcdFx0XHRcdFx0XHRcdGlmIChvYmplY3RbcHJvcGVydHldICE9PSBmaWx0ZXJWYWx1ZSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdFx0XHRjYXNlICdpbmNsdWRlJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAoKG9iamVjdFtwcm9wZXJ0eV0gYXMgc3RyaW5nKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSAnbm90SW5jbHVkZSc6XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCEob2JqZWN0W3Byb3BlcnR5XSBhcyBzdHJpbmcpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJzpcblx0XHRcdFx0XHRcdHN3aXRjaCAoZmlsdGVyQ29uZGl0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2VxdWFsJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSA9PT0gZmlsdGVyVmFsdWUpIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSAnbm90RXF1YWwnOlxuXHRcdFx0XHRcdFx0XHRcdGlmIChvYmplY3RbcHJvcGVydHldICE9PSBmaWx0ZXJWYWx1ZSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdFx0XHRjYXNlICdlcXVhbC9ncmVhdGVyJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSA+PSBmaWx0ZXJWYWx1ZSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdFx0XHRjYXNlICdncmVhdGVyJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSA+IGZpbHRlclZhbHVlKSBmaWx0ZXJlZE9iamVjdHMucHVzaChvYmplY3QpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2VxdWFsL2xvd2VyJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSA8PSBmaWx0ZXJWYWx1ZSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdFx0XHRjYXNlICdsb3dlcic6XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iamVjdFtwcm9wZXJ0eV0gPCBmaWx0ZXJWYWx1ZSkgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnYm9vbGVhbic6XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKGZpbHRlckNvbmRpdGlvbikge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdlcXVhbCc6XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iamVjdFtwcm9wZXJ0eV0gPT09IGZpbHRlclZhbHVlKSBmaWx0ZXJlZE9iamVjdHMucHVzaChvYmplY3QpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0XHRcdGNhc2UgJ25vdEVxdWFsJzpcblx0XHRcdFx0XHRcdFx0XHRpZiAob2JqZWN0W3Byb3BlcnR5XSAhPT0gZmlsdGVyVmFsdWUpIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0cmV0dXJuIGZpbHRlcmVkT2JqZWN0cztcblx0fVxufVxuIl19