@modern-kit/react
Version:
35 lines (31 loc) • 921 B
JavaScript
;
var React = require('react');
var hooksUseEventListener = require('../useEventListener/index.cjs');
require('../usePreservedCallback/index.cjs');
require('../useIsomorphicLayoutEffect/index.cjs');
require('@modern-kit/utils');
function useFocus({
onFocus,
onBlur
} = {}) {
const [isFocus, setIsFocus] = React.useState(false);
const ref = React.useRef(null);
const focusAction = (event) => {
setIsFocus(true);
onFocus?.(event);
};
const blurAction = (event) => {
setIsFocus(false);
onBlur?.(event);
};
const setFocus = React.useCallback(() => {
if (!ref.current) return;
ref.current.focus();
setIsFocus(true);
}, []);
hooksUseEventListener.useEventListener(ref, "focus", focusAction);
hooksUseEventListener.useEventListener(ref, "blur", blurAction);
return { ref, isFocus, setFocus };
}
exports.useFocus = useFocus;
//# sourceMappingURL=index.cjs.map