UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

39 lines (38 loc) 1.1 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const React = require("react"); const document = require("../utils/document.cjs"); const getActiveEl = () => document.getDocument()?.activeElement || null; function makeFocusUtils(containerRef) { function focus(el, checkFocus = true) { if (!checkFocus || containerRef.current?.contains(getActiveEl())) { el?.focus(); } } return { focusPrevious() { focus(getActiveEl()?.previousElementSibling); }, focusNext() { focus(getActiveEl()?.nextElementSibling); }, focusFirst() { focus(getActiveEl()?.parentElement?.firstElementChild); }, focusLast() { focus(getActiveEl()?.parentElement?.lastElementChild); }, focusChild(index) { focus(containerRef.current?.children[index], false); }, focusSibling(index) { focus(getActiveEl()?.parentElement?.children[index]); } }; } function useFocus({ containerRef }) { return React.useMemo(() => makeFocusUtils(containerRef), [containerRef]); } exports.useFocus = useFocus;