MCPcopy Create free account
hub / github.com/adobe/react-spectrum / useRouteFocusSync

Function useRouteFocusSync

packages/@react-spectrum/s2/src/SideNav.tsx:408–426  ·  view source on GitHub ↗
({state}: {state: TreeState<unknown>})

Source from the content-addressed store, hash-verified

406// If the item is inside a collapsed parent, the focused key is moved to the closest
407// visible ancestor instead of the hidden descendant.
408function useRouteFocusSync({state}: {state: TreeState<unknown>}): void {
409 let {selectedRoute, syncedRouteRef} = useContext(InternalSideNavContext);
410 let {collection, selectionManager, expandedKeys} = state;
411 useEffect(() => {
412 if (
413 selectedRoute == null ||
414 syncedRouteRef == null ||
415 syncedRouteRef.current === selectedRoute
416 ) {
417 return;
418 }
419 let key = findKeyForRoute(collection, selectedRoute);
420 if (key != null) {
421 key = closestVisibleKey(collection, expandedKeys, key);
422 syncedRouteRef.current = selectedRoute;
423 selectionManager.setFocusedKey(key);
424 }
425 }, [selectedRoute, collection, expandedKeys, syncedRouteRef, selectionManager]);
426}
427
428export const SideNavItemContent = (props: SideNavItemContentProps): ReactNode => {
429 let {children} = props;

Callers 1

SideNavItemContentInnerFunction · 0.85

Calls 3

findKeyForRouteFunction · 0.85
closestVisibleKeyFunction · 0.85
setFocusedKeyMethod · 0.65

Tested by

no test coverage detected