@ethlete/query 2.9.1 → 2.9.2
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/esm2020/lib/directives/infinity-query.directive.mjs +14 -6
- package/fesm2015/ethlete-query.mjs +13 -5
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +13 -5
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/lib/directives/infinity-query.directive.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i1 from '@ethlete/core';
|
|
2
2
|
import { BehaviorSubjectWithSubscriberCount, getCookie, setCookie, deleteCookie, DestroyService, DelayableDirective, equal, clone } from '@ethlete/core';
|
|
3
|
-
import { Observable, filter, takeWhile, switchMap, of, BehaviorSubject, Subject, takeUntil, tap, interval, startWith, finalize, timer, map, combineLatest, fromEvent, debounceTime, take, concat, distinctUntilChanged } from 'rxjs';
|
|
3
|
+
import { Observable, filter, takeWhile, switchMap, of, BehaviorSubject, Subject, takeUntil, tap, interval, startWith, finalize, timer, map, combineLatest, skip, fromEvent, debounceTime, take, concat, distinctUntilChanged } from 'rxjs';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { Directive, Input, InjectionToken, inject, ChangeDetectorRef, ViewContainerRef, TemplateRef, ErrorHandler, ElementRef } from '@angular/core';
|
|
6
6
|
import { FormGroup } from '@angular/forms';
|
|
@@ -1511,6 +1511,7 @@ class InfinityQueryDirective {
|
|
|
1511
1511
|
this._errorHandler = inject(ErrorHandler);
|
|
1512
1512
|
this._delayable = inject(DelayableDirective, { host: true });
|
|
1513
1513
|
this._data$ = new BehaviorSubject([]);
|
|
1514
|
+
this._didReceiveFirstData$ = new BehaviorSubject(false);
|
|
1514
1515
|
this._isMainViewCreated = false;
|
|
1515
1516
|
}
|
|
1516
1517
|
get infinityQuery() {
|
|
@@ -1545,15 +1546,19 @@ class InfinityQueryDirective {
|
|
|
1545
1546
|
}
|
|
1546
1547
|
_setupInfinityQuery(config) {
|
|
1547
1548
|
const instance = new InfinityQuery(config);
|
|
1548
|
-
combineLatest([
|
|
1549
|
-
.pipe(
|
|
1549
|
+
combineLatest([
|
|
1550
|
+
instance.currentQuery$.pipe(switchQueryState()),
|
|
1551
|
+
this._delayable.isDelayed$,
|
|
1552
|
+
this._didReceiveFirstData$,
|
|
1553
|
+
])
|
|
1554
|
+
.pipe(tap(([state, isDelayed, didReceiveFirstData]) => {
|
|
1550
1555
|
this._viewContext.currentPage = instance.currentPage;
|
|
1551
1556
|
this._viewContext.totalPages = instance.totalPages;
|
|
1552
1557
|
this._viewContext.itemsPerPage = instance.itemsPerPage;
|
|
1553
1558
|
this._viewContext.canLoadMore =
|
|
1554
1559
|
(instance.totalPages && instance.currentPage && instance.totalPages > instance.currentPage) || false;
|
|
1555
1560
|
this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;
|
|
1556
|
-
if (isQueryStateLoading(state) || isDelayed) {
|
|
1561
|
+
if (isQueryStateLoading(state) || isDelayed || (!didReceiveFirstData && isQueryStateSuccess(state))) {
|
|
1557
1562
|
this._viewContext.loading = true;
|
|
1558
1563
|
this._viewContext.error = null;
|
|
1559
1564
|
this._viewContext.isFirstLoad = this.context.infinityQuery === null;
|
|
@@ -1585,9 +1590,12 @@ class InfinityQueryDirective {
|
|
|
1585
1590
|
}), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
|
|
1586
1591
|
.subscribe();
|
|
1587
1592
|
instance.data$
|
|
1588
|
-
.pipe(tap((data) => {
|
|
1593
|
+
.pipe(skip(1), tap((data) => {
|
|
1589
1594
|
this._viewContext.infinityQuery = this._viewContext.$implicit = data;
|
|
1590
1595
|
this._data$.next(data);
|
|
1596
|
+
if (!this._didReceiveFirstData$.getValue()) {
|
|
1597
|
+
this._didReceiveFirstData$.next(true);
|
|
1598
|
+
}
|
|
1591
1599
|
this._cdr.markForCheck();
|
|
1592
1600
|
}), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
|
|
1593
1601
|
.subscribe();
|