component-library-mustafa-akagunduz
Version:
Air Command System projesi için geliştirilmiş React component kütüphanesi
3 lines (2 loc) • 1.75 kB
JavaScript
import{jsx as e,jsxs as l}from"react/jsx-runtime";import{clsx as a}from"../node_modules/clsx/dist/clsx.js";import{useRef as o,useEffect as t}from"react";import{FaTimes as d}from"../node_modules/react-icons/fa/index.js";const r=({isOpen:r,onClose:n,title:s,children:i,className:c,closeOnOverlayClick:m=!0,closeOnEscape:u=!0,hasOverlay:v=!0})=>{const h=o(null);t(()=>{if(!u)return;const e=e=>{"Escape"===e.key&&r&&n()};return r&&(document.addEventListener("keydown",e),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",e),document.body.style.overflow="unset"}},[r,n,u]),t(()=>{r&&h.current&&h.current.focus()},[r]);return r?e("div",v?{className:"modal-overlay",onClick:e=>{m&&e.target===e.currentTarget&&n()},role:"dialog","aria-modal":"true","aria-labelledby":s?"modal-title":void 0,children:l("div",{ref:h,className:a("modal",c),tabIndex:-1,children:[s&&l("div",{className:"modal__header",children:[e("h2",{id:"modal-title",className:"modal__title",children:s}),e("button",{className:"modal__close",onClick:n,"aria-label":"Close modal",type:"button",children:e(d,{})})]}),e("div",{className:"modal__content",children:i})]})}:{className:"modal-overlay",style:{backgroundColor:"transparent",pointerEvents:"none"},role:"dialog","aria-modal":"true","aria-labelledby":s?"modal-title":void 0,children:l("div",{ref:h,className:a("modal",c),tabIndex:-1,style:{pointerEvents:"auto"},children:[s&&l("div",{className:"modal__header",children:[e("h2",{id:"modal-title",className:"modal__title",children:s}),e("button",{className:"modal__close",onClick:n,"aria-label":"Close modal",type:"button",children:e(d,{})})]}),e("div",{className:"modal__content",children:i})]})}):null};export{r as Modal};
//# sourceMappingURL=Modal.js.map