UNPKG

@zohodesk/a11y

Version:

In this Package, We Provide Some Basic Components For Accessibility.

58 lines 1.68 kB
import React, { useRef } from 'react'; import propTypes from './props/propTypes'; import FocusScope from '../FocusScope/FocusScope'; import ListContainer from '@zohodesk/components/es/ListItem/ListContainer'; import useSkipNavigation from './useSkipNavigation'; import style from './SkipNavigation.module.css'; export default function SkipNavigation(props) { const { element, children, onClickMenu } = props; const menuContainer = useRef(null); const { isActive, landmarkElements, getEleName, onOpenMenu, onCloseMenu, onClickLandmark } = useSkipNavigation({ element, menuContainer, onClickMenu }); return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { tabIndex: "0", onFocus: onOpenMenu }), isActive && /*#__PURE__*/React.createElement(FocusScope, { needEnterAction: true, elementRef: menuContainer, needAutoFocus: true, needRestoreFocus: false, needListNavigation: true, onClose: onCloseMenu }, /*#__PURE__*/React.createElement("div", { ref: menuContainer, className: style.container, tabIndex: -1 }, landmarkElements && landmarkElements.map(ele => { const name = getEleName(ele); ele.setAttribute('data-a11y-focus-class', style.focused); return /*#__PURE__*/React.createElement(ListContainer, { key: name, customClass: style.list, customProps: { 'data-a11y-list-focus-class': style.highlight }, a11y: { role: 'option' }, onClick: () => { onClickLandmark(ele); } }, name); }))), children); } SkipNavigation.propTypes = propTypes;