UNPKG

carbon-react

Version:

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

2 lines (1 loc) 1.02 kB
import{useContext as t,useEffect as e}from"react";import n from"../../../components/carbon-provider/__internal__/top-modal.context.js";function r(r,i){const{topModal:a}=t(n),o=null==a?void 0:a.contains(r.current);return e((()=>{const t=[],e=n=>{i||"true"===n.dataset.notInert||(n.contains(a)?n!==a&&Array.from(n.children).forEach((t=>{t instanceof HTMLElement&&e(t)})):n.hasAttribute("data-modal-hidden")||(t.push({element:n,"aria-hidden":n.getAttribute("aria-hidden"),inert:n.getAttribute("inert")}),n.contains(document.activeElement)&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),n.setAttribute("aria-hidden","true"),n.setAttribute("inert",""),n.setAttribute("data-modal-hidden","true")))};return o&&e(document.body),()=>t.forEach((({element:t,"aria-hidden":e,inert:n})=>{null===e?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e),null===n?t.removeAttribute("inert"):t.setAttribute("inert",n),t.removeAttribute("data-modal-hidden")}))}),[a,o,i]),o}export{r as default};