Skip to content

Commit 085d164

Browse files
committed
feat(#26): Add support for boolean values in filterBy
1 parent 1e709bd commit 085d164

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ngx-pipes",
3-
"version": "1.4.1",
3+
"version": "1.4.2",
44
"author": "Dan Revah",
55
"description": "Useful angular2 pipes",
66
"license": "MIT",

src/app/pipes/array/filter-by.spec.ts

+12-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ describe('FilterByPipe', () => {
44
let pipe: FilterByPipe;
55

66
const users = [
7-
{id: 1, first_name: 'John', last_name: 'Doe', work: { title: 'Software Engineer', company: 'Foo Tech', previous_company: 'Unknown' }},
8-
{id: 2, first_name: 'Jane', last_name: 'West', work: { title: 'Designer', company: 'AAA Solutions', previous_company: 'Unknown' }},
9-
{id: 3, first_name: 'Bruce', last_name: 'John', work: { title: 'Software Engineer', company: 'Bar Tech', previous_company: 'Unknown' }},
10-
{id: 4, first_name: 'William', last_name: 'Cent', work: { title: 'Designer', company: 'Foo Tech', previous_company: 'Bar Tech' }}
7+
{id: 1, first_name: 'John', last_name: 'Doe', work: { title: 'Software Engineer', company: 'Foo Tech', previous_company: 'Unknown' }, current_employed: true},
8+
{id: 2, first_name: 'Jane', last_name: 'West', work: { title: 'Designer', company: 'AAA Solutions', previous_company: 'Unknown' }, current_employed: false},
9+
{id: 3, first_name: 'Bruce', last_name: 'John', work: { title: 'Software Engineer', company: 'Bar Tech', previous_company: 'Unknown' }, current_employed: true},
10+
{id: 4, first_name: 'William', last_name: 'Cent', work: { title: 'Designer', company: 'Foo Tech', previous_company: 'Bar Tech' }, current_employed: false}
1111
];
1212

1313
beforeEach(() => {
@@ -29,6 +29,14 @@ describe('FilterByPipe', () => {
2929
expect(filtered[0]).toEqual(users[0]);
3030
});
3131

32+
it('should filter by boolean value', () => {
33+
const filtered = pipe.transform(users, ['current_employed'], true);
34+
35+
expect(filtered.length).toEqual(2);
36+
expect(filtered[0]).toEqual(users[0]);
37+
expect(filtered[1]).toEqual(users[2]);
38+
});
39+
3240
it('should filter by multiple fields with a two result', () => {
3341
const filtered = pipe.transform(users, ['first_name', 'last_name'], 'John');
3442

src/app/pipes/array/filter-by.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {PipeTransform, Pipe} from '@angular/core';
2-
import {isString, extractDeepPropertyByMapKey, isNumberFinite} from '../helpers/helpers';
2+
import {isString, extractDeepPropertyByMapKey, isNumberFinite, isBoolean} from '../helpers/helpers';
33

44
@Pipe({name: 'filterBy'})
55
export class FilterByPipe implements PipeTransform {
66

77
transform(input: any, props: Array<string>, search: any, strict: boolean = false): any[] {
8-
if (!Array.isArray(input) || (!isString(search) && !isNumberFinite(search))) {
8+
if (!Array.isArray(input) || (!isString(search) && !isNumberFinite(search) && !isBoolean(search))) {
99
return input;
1010
}
1111

src/app/pipes/helpers/helpers.ts

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ export function isString(value: any) {
1616
return typeof value === 'string';
1717
}
1818

19+
export function isBoolean(value: any) {
20+
return typeof value === 'boolean';
21+
}
22+
1923
export function isObject(value: any) {
2024
return value !== null && typeof value === 'object';
2125
}

0 commit comments

Comments
 (0)