File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed
core/src/components/refresher Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff 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 ( {
You can’t perform that action at this time.
0 commit comments