Commit 9918a86
committed
fix(google-maps): guard pan-on-open for closed/unpositioned overlay
`<ScriptGoogleMapsOverlayView>` previously scheduled
`panMapToFitOverlay` from `onAdd()` whenever `panOnOpen` was enabled,
even when the overlay started closed or `draw()` had not yet resolved
a position. That caused unexpected map panning on initial mount and
remount when the overlay was hidden.
Add two guards:
1. Before scheduling the rAF, check `open !== false`. This skips the
rAF entirely when the overlay is mounted closed.
2. Inside the rAF callback, re-check `open` and `overlayPosition` (and
the anchor element). The state may have changed during the frame:
the controlled `open` could flip to false, the position may not
have resolved, or the component may have unmounted.
Tests cover the four pan-on-open paths:
- defaultOpen=false → no rAF scheduled
- :open=false (controlled) → no rAF scheduled
- panOnOpen=false → no rAF scheduled
- happy path (open + positioned) → rAF still scheduled1 parent c33473c commit 9918a86
2 files changed
Lines changed: 67 additions & 4 deletions
File tree
- packages/script/src/runtime/components/GoogleMaps
- test/nuxt-runtime
Lines changed: 7 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
234 | 234 | | |
235 | 235 | | |
236 | 236 | | |
237 | | - | |
238 | | - | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
239 | 243 | | |
240 | 244 | | |
241 | | - | |
| 245 | + | |
242 | 246 | | |
243 | 247 | | |
244 | 248 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
350 | 409 | | |
0 commit comments