Search code examples
javascriptangularcordovapull-to-refresh

Pull to refresh strange behaviour


I have the following code

<div id="fincasMaestro" class="page-layout  fullwidth page-layout-app p-16"  fxFlex fxLayout="column"  [@animate]="{value:'*',params:{delay:'200ms',y:'100%'}}">

<!-- HEADER -->
<div id="loader" class="h2 text-center mt-4">Parcelas</div>

<mat-tab-group animationDuration="0ms">
    <mat-tab label="Activas"> <fincasactivas style="height: 100%"></fincasactivas> </mat-tab>
    <mat-tab label="Finalizadas"> <archivedfincas style="height: 100%"> </archivedfincas> </mat-tab>
</mat-tab-group>

and inside the component.ts I initialize the pull to refresh component

const ptr = PullToRefresh.init({
mainElement: '#loader',
instructionsPullToRefresh: 'Arrastre hacia abajo para refrescar',
instructionsReleaseToRefresh: 'Suelte para refrescar',
instructionsRefreshing: 'Refrescando la página',
onRefresh() {
   window.location.reload();
    }
 });

this works fine if I swipe up but I have one problem, the component inside my mat-tabs are lists with too much items to fit the screen, so I have an scroll, if I go to the bottom of the page and I try to scroll up the page refresh even if I'm at the bottom

any idea why is this happening? -

Just in case, I'm using Angular7+ with cordova.

Tested on Android

Edit: I've found the answer


Solution

  • I've found the answer

            mainElement: '#loader',
            shouldPullToRefresh: () => {return document.getElementById('fincas').scrollTop === 0},
            onRefresh: () => {
                    //onRefresh code 
                }
          });
    

    using shouldPullToRefresh and the property scrollTop we can only refresh if the scroll is at top, so we can move from bottom without refreshing by mistake