Skip to content

Commit 1d666d5

Browse files
committed
feat(core): Added numericParam, booleanParam and customParam
1 parent da72932 commit 1d666d5

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

projects/ngqp/core/src/lib/query-param-builder.service.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Injectable } from '@angular/core';
22
import { QueryParamControl, QueryParamControlOpts, QueryParamGroup } from './model';
33
import {
4+
DEFAULT_BOOLEAN_DESERIALIZER,
5+
DEFAULT_BOOLEAN_SERIALIZER,
46
DEFAULT_NUMBER_DESERIALIZER,
57
DEFAULT_NUMBER_SERIALIZER,
68
DEFAULT_STRING_DESERIALIZER,
@@ -38,6 +40,35 @@ export class QueryParamBuilder {
3840
});
3941
}
4042

43+
/**
44+
* TODO Documentation
45+
*/
46+
public numericParam(config: QueryParamControlOpts<number>): QueryParamControl<number> {
47+
return new QueryParamControl({
48+
serialize: DEFAULT_NUMBER_SERIALIZER,
49+
deserialize: DEFAULT_NUMBER_DESERIALIZER,
50+
...config,
51+
});
52+
}
53+
54+
/**
55+
* TODO Documentation
56+
*/
57+
public booleanParam(config: QueryParamControlOpts<boolean>): QueryParamControl<boolean> {
58+
return new QueryParamControl({
59+
serialize: DEFAULT_BOOLEAN_SERIALIZER,
60+
deserialize: DEFAULT_BOOLEAN_DESERIALIZER,
61+
...config,
62+
});
63+
}
64+
65+
/**
66+
* TODO Documentation
67+
*/
68+
public customParam<T>(config: QueryParamControlOpts<T>): QueryParamControl<T> {
69+
return new QueryParamControl(config);
70+
}
71+
4172
private createControl<T>(controlName: string, controlConfig: QueryParamControl<T> | string): QueryParamControl<T | string> {
4273
if (controlConfig instanceof QueryParamControl) {
4374
return controlConfig;

projects/ngqp/core/src/lib/serializers.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ export function createNumberDeserializer(defaultValue: number | null = null): Pa
2929
return (value: string | null) => isMissing(value) ? defaultValue : parseFloat(value);
3030
}
3131

32+
/**
33+
* TODO Documentation
34+
*/
35+
export function createBooleanSerializer(defaultValue: string | null = null): ParamSerializer<boolean> {
36+
return (model: boolean | null) => isMissing(model) ? defaultValue : `${model}`;
37+
}
38+
39+
/**
40+
* TODO Documentation
41+
*/
42+
export function createBooleanDeserializer(defaultValue: boolean | null = null): ParamDeserializer<boolean> {
43+
return (value: string | null) => isMissing(value) ? defaultValue : (value === 'true' || value === '1');
44+
}
45+
3246
/** TODO Documentation */
3347
export const DEFAULT_STRING_SERIALIZER = createStringSerializer();
3448

@@ -39,4 +53,10 @@ export const DEFAULT_STRING_DESERIALIZER = createStringDeserializer();
3953
export const DEFAULT_NUMBER_SERIALIZER = createNumberSerializer();
4054

4155
/** TODO Documentation */
42-
export const DEFAULT_NUMBER_DESERIALIZER = createNumberDeserializer();
56+
export const DEFAULT_NUMBER_DESERIALIZER = createNumberDeserializer();
57+
58+
/** TODO Documentation */
59+
export const DEFAULT_BOOLEAN_SERIALIZER = createBooleanSerializer();
60+
61+
/** TODO Documentation */
62+
export const DEFAULT_BOOLEAN_DESERIALIZER = createBooleanDeserializer();

0 commit comments

Comments
 (0)