|
1 | | -import React, { useState, useEffect, useCallback } from 'react'; |
| 1 | +import React, { useState, useEffect, useCallback, useRef } from 'react'; |
2 | 2 | import { useSearchParams } from 'react-router-dom'; |
3 | 3 | import { navigationAPI } from '../api'; |
4 | 4 | import { useTranslation } from '../i18n'; |
@@ -42,6 +42,9 @@ const NavigationPage = () => { |
42 | 42 | const [routeGeometry, setRouteGeometry] = useState(null); |
43 | 43 | const [routeError, setRouteError] = useState(null); // For impossible routes |
44 | 44 |
|
| 45 | + // Ref for auto-scrolling to results |
| 46 | + const resultsRef = useRef(null); |
| 47 | + |
45 | 48 | // Reverse geocode when route data changes |
46 | 49 | const geocodeLocations = useCallback(async () => { |
47 | 50 | if (!routeData) return; |
@@ -153,6 +156,13 @@ const NavigationPage = () => { |
153 | 156 | } |
154 | 157 |
|
155 | 158 | setRouteData(routeInfo); |
| 159 | + |
| 160 | + // Auto-scroll to map on mobile after route calculation |
| 161 | + setTimeout(() => { |
| 162 | + if (resultsRef.current) { |
| 163 | + resultsRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' }); |
| 164 | + } |
| 165 | + }, 100); |
156 | 166 | } catch (err) { |
157 | 167 | setError(err.message || t('errorCalculatingRoute')); |
158 | 168 | console.error('Error calculating route:', err); |
@@ -320,7 +330,7 @@ const NavigationPage = () => { |
320 | 330 | </div> |
321 | 331 |
|
322 | 332 | {/* Results */} |
323 | | - <div className="results-column"> |
| 333 | + <div className="results-column" ref={resultsRef}> |
324 | 334 | {routeData ? ( |
325 | 335 | <div className="route-results-card animate-fadeInUp"> |
326 | 336 | <div className="card-title"> |
|
0 commit comments