Skip to content

Commit 2743331

Browse files
committed
fix(refresher): prevent focus-related scroll jumps on refresh
1 parent ed13318 commit 2743331

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

core/src/components/refresher/refresher.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,15 @@ export class Refresher implements ComponentInterface {
253253
this.didRefresh = true;
254254
hapticImpact({ style: ImpactStyle.Light });
255255

256+
/**
257+
* Clear focus from any active element to prevent scroll jumps
258+
* when the refresh completes
259+
*/
260+
const activeElement = document.activeElement as HTMLElement;
261+
if (activeElement?.blur !== undefined) {
262+
activeElement.blur();
263+
}
264+
256265
/**
257266
* Translate the content element otherwise when pointer is removed
258267
* from screen the scroll content will bounce back over the refresher
@@ -733,6 +742,16 @@ export class Refresher implements ComponentInterface {
733742
// place the content in a hangout position while it thinks
734743
this.setCss(this.pullMin, this.snapbackDuration, true, '');
735744

745+
/**
746+
* Clear focus from any active element to prevent the browser
747+
* from restoring focus and causing scroll jumps after refresh.
748+
* This ensures the view stays at the top after refresh completes.
749+
*/
750+
const activeElement = document.activeElement as HTMLElement;
751+
if (activeElement?.blur !== undefined) {
752+
activeElement.blur();
753+
}
754+
736755
// emit "refresh" because it was pulled down far enough
737756
// and they let go to begin refreshing
738757
this.ionRefresh.emit({

0 commit comments

Comments
 (0)