carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 1.08 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("../../../components/carbon-provider/__internal__/top-modal.context.js");exports.default=function(r,n){const{topModal:i}=t.useContext(e.default),a=null==i?void 0:i.contains(r.current);return t.useEffect((()=>{const t=[],e=r=>{n||"true"===r.dataset.notInert||(r.contains(i)?r!==i&&Array.from(r.children).forEach((t=>{t instanceof HTMLElement&&e(t)})):r.hasAttribute("data-modal-hidden")||(t.push({element:r,"aria-hidden":r.getAttribute("aria-hidden"),inert:r.getAttribute("inert")}),r.contains(document.activeElement)&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),r.setAttribute("aria-hidden","true"),r.setAttribute("inert",""),r.setAttribute("data-modal-hidden","true")))};return a&&e(document.body),()=>t.forEach((({element:t,"aria-hidden":e,inert:r})=>{null===e?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e),null===r?t.removeAttribute("inert"):t.setAttribute("inert",r),t.removeAttribute("data-modal-hidden")}))}),[i,a,n]),a};