@ethlete/query 4.2.2 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,17 @@
1
- import { FormGroup } from '@angular/forms';
2
- import { QueryFieldOptions, QueryFormGroup, QueryFormObserveOptions, QueryFormValue, QueryFormValueEvent } from './query-form.types';
1
+ import { AbstractControl, FormGroup, ɵValue } from '@angular/forms';
2
+ import { QueryFieldOptions, QueryFormGroupControls, QueryFormObserveOptions, QueryFormValue } from './query-form.types';
3
+ export declare class QueryFormGroup<T extends {
4
+ [K in keyof T]: AbstractControl<any, any>;
5
+ } = any> extends FormGroup<T> {
6
+ patchValue(value: 0 extends 1 & T ? {
7
+ [key: string]: any;
8
+ } : Partial<{
9
+ [K in keyof T]: ɵValue<T[K]>;
10
+ }>, options?: {
11
+ onlySelf?: boolean | undefined;
12
+ emitEvent?: boolean | undefined;
13
+ } | undefined): void;
14
+ }
3
15
  export declare class QueryField<T> {
4
16
  data: QueryFieldOptions<T>;
5
17
  changes$: import("rxjs").Observable<T | null>;
@@ -13,23 +25,35 @@ export declare class QueryField<T> {
13
25
  }
14
26
  export declare class QueryForm<T extends Record<string, QueryField<any>>> {
15
27
  private _fields;
16
- private _router;
17
- private _activatedRoute;
18
- private _defaultValues;
19
- form: FormGroup<QueryFormGroup<T>>;
28
+ private readonly _destroy$;
29
+ private readonly _unobserveTrigger$;
30
+ private readonly _router;
31
+ private readonly _activatedRoute;
32
+ private readonly _defaultValues;
33
+ private readonly _routerStateService;
34
+ private readonly _zone;
35
+ private _isObserving;
36
+ readonly form: QueryFormGroup<QueryFormGroupControls<T>>;
37
+ private readonly _lastFormValue$;
38
+ private readonly _currentFormValue$;
20
39
  private get _formValue();
21
40
  private readonly _changes$;
22
- readonly changes$: import("rxjs").Observable<QueryFormValueEvent<T>>;
23
- get controls(): 0 extends 1 & QueryFormGroup<T> ? {
24
- [key: string]: import("@angular/forms").AbstractControl<any, any>;
25
- } : QueryFormGroup<T>;
41
+ readonly changes$: import("rxjs").Observable<{
42
+ previousValue: QueryFormValue<T> | null;
43
+ currentValue: QueryFormValue<T>;
44
+ }>;
45
+ get controls(): 0 extends 1 & QueryFormGroupControls<T> ? {
46
+ [key: string]: AbstractControl<any, any>;
47
+ } : QueryFormGroupControls<T>;
26
48
  get value(): QueryFormValue<T>;
27
49
  constructor(_fields: T);
28
- observe(options?: QueryFormObserveOptions): import("rxjs").Observable<null>;
29
- setFormValueFromUrlQueryParams(options?: {
50
+ observe(options?: QueryFormObserveOptions): void;
51
+ private _handleQueryFormResets;
52
+ unobserve(): void;
53
+ setFormValueFromUrlQueryParams(options: {
54
+ queryParams: Record<string, unknown>;
30
55
  skipDebounce?: boolean;
31
56
  }): void;
32
- updateFormOnUrlQueryParamsChange(): import("rxjs").Observable<import("@angular/router").Params>;
33
57
  private _getDefaultValue;
34
58
  private _isDefaultValue;
35
59
  private _setupFormGroup;
@@ -53,7 +53,7 @@ export interface QueryFieldOptions<T = unknown> {
53
53
  */
54
54
  valueToQueryParamTransformFn?: (val: T | null) => unknown;
55
55
  }
56
- export type QueryFormGroup<T extends Record<string, QueryField<any>>> = {
56
+ export type QueryFormGroupControls<T extends Record<string, QueryField<any>>> = {
57
57
  [Property in keyof T]: T[Property]['control'];
58
58
  };
59
59
  export type QueryFormValue<T extends Record<string, QueryField<any>>> = {
@@ -62,8 +62,19 @@ export type QueryFormValue<T extends Record<string, QueryField<any>>> = {
62
62
  export interface QueryFormObserveOptions {
63
63
  /**
64
64
  * Whether the form value should be synced to the url query params.
65
+ * @default true
66
+ */
67
+ writeToQueryParams?: boolean;
68
+ /**
69
+ * Whether the form value should be updated when the url query params change.
70
+ * @default true
71
+ */
72
+ syncOnNavigation?: boolean;
73
+ /**
74
+ * If true, the navigation will not create a new entry in the browser's history.
75
+ * @default false
65
76
  */
66
- syncViaUrlQueryParams?: boolean;
77
+ replaceUrl?: boolean;
67
78
  }
68
79
  export interface QueryFormValueEvent<T extends Record<string, QueryField<any>>> {
69
80
  previousValue: QueryFormValue<T> | null;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@ethlete/query",
3
- "version": "4.2.2",
3
+ "version": "4.3.1",
4
4
  "dependencies": {
5
5
  "tslib": "^2.5.0"
6
6
  },
7
7
  "peerDependencies": {
8
8
  "@angular/common": "^15.2.1 || ^16.0.0",
9
9
  "@angular/core": "^15.2.1 || ^16.0.0",
10
- "@ethlete/core": "2.0.0"
10
+ "@ethlete/core": "2.2.0"
11
11
  },
12
12
  "module": "fesm2022/ethlete-query.mjs",
13
13
  "typings": "index.d.ts",