@zohodesk/a11y
Version:
In this Package, We Provide Some Basic Components For Accessibility.
54 lines (53 loc) • 1.16 kB
JavaScript
import React, { useEffect } from "react";
import useAutoFocus from "./useAutoFocus";
import useFocusLoop from "./useFocusLoop";
import useRestoreFocus from "./useRestoreFocus";
export default (_ref => {
let {
needAutoFocus = false,
needListNavigation = false,
needFocusLoop = false,
needRestoreFocus = false,
onFocus,
contentRef = null,
onUpdateRestore,
onClearRestore,
onClose,
needEnterAction,
loadNextOptions,
searchValue,
isFetchingOptions
} = _ref;
useEffect(() => {
if (contentRef && contentRef()) {
contentRef().dataset.a11yFocusScope = true;
}
return () => {
if (contentRef && contentRef()) {
contentRef().dataset.a11yFocusScope = false;
}
};
}, []);
useAutoFocus({
contentRef,
needAutoFocus,
onFocus
});
useFocusLoop({
contentRef,
needListNavigation,
needFocusLoop,
onFocus,
onClose,
needEnterAction,
loadNextOptions,
searchValue,
isFetchingOptions
});
useRestoreFocus({
contentRef,
isRestoreFocus: needRestoreFocus,
onUpdate: onUpdateRestore,
onClear: onClearRestore
});
});