({state}: {state: TreeState<unknown>})
| 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. |
| 408 | function 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 | |
| 428 | export const SideNavItemContent = (props: SideNavItemContentProps): ReactNode => { |
| 429 | let {children} = props; |
no test coverage detected