@tanstack/solid-router 1.162.5 → 1.162.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/link.tsx CHANGED
@@ -73,6 +73,7 @@ export function useLinkProps<
73
73
  'style',
74
74
  'class',
75
75
  'onClick',
76
+ 'onBlur',
76
77
  'onFocus',
77
78
  'onMouseEnter',
78
79
  'onMouseLeave',
@@ -297,6 +298,7 @@ export function useLinkProps<
297
298
  'style',
298
299
  'class',
299
300
  'onClick',
301
+ 'onBlur',
300
302
  'onFocus',
301
303
  'onMouseEnter',
302
304
  'onMouseLeave',
@@ -346,35 +348,34 @@ export function useLinkProps<
346
348
  }
347
349
  }
348
350
 
349
- // The click handler
350
- const handleFocus = (_: MouseEvent) => {
351
- if (local.disabled) return
352
- if (preload()) {
353
- doPreload()
351
+ const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {
352
+ if (local.disabled || !preload()) return
353
+ const eventTarget = (e.currentTarget ||
354
+ e.target ||
355
+ {}) as LinkCurrentTargetElement
356
+
357
+ if (eventTarget.preloadTimeout) {
358
+ return
354
359
  }
355
- }
356
360
 
357
- const handleTouchStart = handleFocus
361
+ eventTarget.preloadTimeout = setTimeout(() => {
362
+ eventTarget.preloadTimeout = null
363
+ doPreload()
364
+ }, preloadDelay())
365
+ }
358
366
 
359
- const handleEnter = (e: MouseEvent) => {
367
+ const handleTouchStart = (_: TouchEvent) => {
360
368
  if (local.disabled) return
361
- const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement
362
-
363
369
  if (preload()) {
364
- if (eventTarget.preloadTimeout) {
365
- return
366
- }
367
-
368
- eventTarget.preloadTimeout = setTimeout(() => {
369
- eventTarget.preloadTimeout = null
370
- doPreload()
371
- }, preloadDelay())
370
+ doPreload()
372
371
  }
373
372
  }
374
373
 
375
- const handleLeave = (e: MouseEvent) => {
374
+ const handleLeave = (e: MouseEvent | FocusEvent) => {
376
375
  if (local.disabled) return
377
- const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement
376
+ const eventTarget = (e.currentTarget ||
377
+ e.target ||
378
+ {}) as LinkCurrentTargetElement
378
379
 
379
380
  if (eventTarget.preloadTimeout) {
380
381
  clearTimeout(eventTarget.preloadTimeout)
@@ -441,9 +442,16 @@ export function useLinkProps<
441
442
  href: hrefOption()?.href,
442
443
  ref: mergeRefs(setRef, _options().ref),
443
444
  onClick: composeEventHandlers([local.onClick, handleClick]),
444
- onFocus: composeEventHandlers([local.onFocus, handleFocus]),
445
- onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),
446
- onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),
445
+ onBlur: composeEventHandlers([local.onBlur, handleLeave]),
446
+ onFocus: composeEventHandlers([local.onFocus, enqueueIntentPreload]),
447
+ onMouseEnter: composeEventHandlers([
448
+ local.onMouseEnter,
449
+ enqueueIntentPreload,
450
+ ]),
451
+ onMouseOver: composeEventHandlers([
452
+ local.onMouseOver,
453
+ enqueueIntentPreload,
454
+ ]),
447
455
  onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),
448
456
  onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),
449
457
  onTouchStart: composeEventHandlers([