UNPKG

rsuite

Version:

A suite of react components

42 lines 955 B
'use client'; import { useState } from 'react'; import { useEventCallback } from "../../internals/hooks/index.js"; function useFocusState(props) { const { target, value, focusActiveNode } = props; const [active, setActive] = useState(false); const [focusItemValue, setFocusItemValue] = useState(null); const focusTarget = useEventCallback(() => { target.current?.focus(); }); const onEnter = useEventCallback(node => { setActive(true); props.onEnter?.(node); }); const onExit = useEventCallback(node => { setActive(false); focusTarget(); props.onExit?.(node); }); const onEntered = useEventCallback(node => { if (value) { setFocusItemValue(value); focusActiveNode(); } props.onEntered?.(node); }); return { active, focusItemValue, setFocusItemValue, triggerProps: { onEnter, onExit, onEntered } }; } export default useFocusState;