UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 938 B
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),l=require("../../../__internal__/utils/helpers/events/events.js"),a=require("../useModalManager/useModalManager.js");exports.default=(t,u,s,r)=>{const n=e.useCallback((()=>{var e;s(),null===(e=t.current)||void 0===e||e.focus()}),[s,t]),d=e.useCallback((e=>{l.default.isEscKey(e)&&n()}),[n]);return a.default({open:r,closeModal:d,modalRef:t}),e.useCallback((e=>{l.default.isEnterKey(e)||l.default.isSpaceKey(e)||l.default.isTabKey(e)||e.preventDefault();const a=u(),t=null==a?void 0:a.length;let s=-1;const r=Array.from(a).indexOf(document.activeElement),n=e.ctrlKey||e.metaKey;var d;(l.default.isEndKey(e)||n&&l.default.isDownKey(e))&&(s=t-1),(l.default.isHomeKey(e)||n&&l.default.isUpKey(e))&&(s=0),!n&&l.default.isUpKey(e)&&r>0&&(s=r-1),!n&&l.default.isDownKey(e)&&r<t-1&&(s=r+1),s>-1&&(null==a||null===(d=a[s])||void 0===d||d.focus())}),[u])};