@reforgium/statum 3.1.2 → 3.1.3
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.
- package/CHANGELOG.md +7 -0
- package/fesm2022/reforgium-statum.mjs +9 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [3.1.3]: 2026-04-06
|
|
2
|
+
|
|
3
|
+
### Fix:
|
|
4
|
+
- `PagedQueryStore`: all public state getters (`filters`, `query`, `page`, `pageSize`, `totalElements`, `sort`) and direct `#routeParams` reads now wrap the underlying signal in `untracked()`; previously calling `fetch()`, `refetchWith()`, `updatePage()`, `setRouteParams()`, etc. from inside an Angular `effect()` or `computed()` would inadvertently subscribe the reactive context to internal state signals, causing cascading re-runs; reactive subscriptions remain available exclusively through the `*State` readonly signals (`filtersState`, `sortState`, `pageState`, …)
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
## [3.1.2]: 2026-04-06
|
|
2
9
|
|
|
3
10
|
### Fix:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Serializer, fillUrlWithParams, mergeQueryParams, LruCache, deepEqual, isNullable, normalizeSortInput, sortInputToTokens, debounceSignal, storageStrategy } from '@reforgium/internal';
|
|
2
2
|
export { LocalStorage, LruCache, MemoryStorage, Serializer, SerializerFieldError, SessionStorage, storageStrategy } from '@reforgium/internal';
|
|
3
3
|
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
4
|
-
import { InjectionToken, makeEnvironmentProviders, inject, signal, computed, EnvironmentInjector, DestroyRef, runInInjectionContext, effect
|
|
4
|
+
import { InjectionToken, makeEnvironmentProviders, inject, signal, computed, EnvironmentInjector, DestroyRef, untracked, runInInjectionContext, effect } from '@angular/core';
|
|
5
5
|
import { Subject, filter, timer, merge, map } from 'rxjs';
|
|
6
6
|
import { debounce, tap, throttle, finalize } from 'rxjs/operators';
|
|
7
7
|
|
|
@@ -877,27 +877,27 @@ class PagedQueryStore {
|
|
|
877
877
|
}
|
|
878
878
|
/** Current filters (applied to requests). */
|
|
879
879
|
get filters() {
|
|
880
|
-
return this.#filters
|
|
880
|
+
return untracked(this.#filters);
|
|
881
881
|
}
|
|
882
882
|
/** Additional query params sent to transport requests. */
|
|
883
883
|
get query() {
|
|
884
|
-
return this.#query
|
|
884
|
+
return untracked(this.#query);
|
|
885
885
|
}
|
|
886
886
|
/** Current page index (0-based). */
|
|
887
887
|
get page() {
|
|
888
|
-
return this.#page
|
|
888
|
+
return untracked(this.#page);
|
|
889
889
|
}
|
|
890
890
|
/** Default page size. */
|
|
891
891
|
get pageSize() {
|
|
892
|
-
return this.#pageSize
|
|
892
|
+
return untracked(this.#pageSize);
|
|
893
893
|
}
|
|
894
894
|
/** Total number of elements reported by the server. */
|
|
895
895
|
get totalElements() {
|
|
896
|
-
return this.#totalElements
|
|
896
|
+
return untracked(this.#totalElements);
|
|
897
897
|
}
|
|
898
898
|
/** Current sort rules. */
|
|
899
899
|
get sort() {
|
|
900
|
-
return this.#sort
|
|
900
|
+
return untracked(this.#sort);
|
|
901
901
|
}
|
|
902
902
|
set filters(value) {
|
|
903
903
|
this.#filters.set(value);
|
|
@@ -998,7 +998,7 @@ class PagedQueryStore {
|
|
|
998
998
|
* ```
|
|
999
999
|
*/
|
|
1000
1000
|
setRouteParams = (params = {}, opts = {}) => {
|
|
1001
|
-
const isChanged = !deepEqual(this.#routeParams
|
|
1001
|
+
const isChanged = !deepEqual(untracked(this.#routeParams), params);
|
|
1002
1002
|
if (!isChanged) {
|
|
1003
1003
|
return;
|
|
1004
1004
|
}
|
|
@@ -1046,7 +1046,7 @@ class PagedQueryStore {
|
|
|
1046
1046
|
}
|
|
1047
1047
|
}
|
|
1048
1048
|
}
|
|
1049
|
-
#fetchItems = async ({ page = this.page, size = this.pageSize, filters = this.filters, query = this.query, routeParams = this.#routeParams
|
|
1049
|
+
#fetchItems = async ({ page = this.page, size = this.pageSize, filters = this.filters, query = this.query, routeParams = untracked(this.#routeParams), sort = this.sort, }) => {
|
|
1050
1050
|
const builtQuery = this.parseQuery({ page, size, filters, query, sort });
|
|
1051
1051
|
const requestId = ++this.#requestId;
|
|
1052
1052
|
this.#activeRequests++;
|
package/package.json
CHANGED