UNPKG

@bothub-chat/ui

Version:

Bothub UI Components

2 lines (1 loc) 1.77 kB
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{useTransition as t}from"@react-spring/web";import{forwardRef as n,useId as l,useRef as o,useCallback as i,useEffect as a}from"react";import{ModalWindowContent as c,ModalWindowStyled as s,ModalWindowBody as u,ModalWindowTitle as d,ModalWindowCloseButton as m,ModalWindowCloseButtonIcon as f,ModalWindowBodyContent as p,ModalWindowBodyScrollbarWrapper as g}from"./styled.js";const h=n(({children:n,open:h,title:y=null,scrollbar:v=!1,images:b,className:C,hideCloseButton:k=!1,onClose:w,onHeightChange:B,"aria-label":E,closeAriaLabel:L},R)=>{const j=l(),x=o(null),z=o(null),N=i(e=>{var r;if(null===(r=z.current)||void 0===r||r.disconnect(),z.current=null,x.current=e,function(e,r){"function"==typeof e?e(r):null!=e&&(e.current=r)}(R,e),e){null==B||B(e.getBoundingClientRect().height);const r=new ResizeObserver(()=>{x.current&&(null==B||B(x.current.getBoundingClientRect().height))});r.observe(e),z.current=r}},[B,R]);a(()=>{if(!h)return;const e=e=>{"Escape"===e.key&&(e.stopPropagation(),null==w||w())};return document.addEventListener("keyup",e,!0),()=>{document.removeEventListener("keyup",e,!0)}},[h,w]);const A=t(h,{from:{opacity:0,transform:"scale(0.9)"},enter:{opacity:1,transform:"scale(1)"},leave:{opacity:0,transform:"scale(0.9)"},config:{duration:200}}),H=e(c,{children:n});return A((t,n)=>n&&r(s,{ref:N,style:t,className:C,role:"dialog","aria-modal":"true","aria-labelledby":"string"==typeof y?j:void 0,"aria-label":"string"==typeof y?void 0:E,children:[b,r(u,{children:["string"==typeof y?e(d,{id:j,children:y}):y,!k&&e(m,{onClick:w,"aria-label":L,"data-test":"close modal",children:e(f,{size:24})}),e(p,{children:v?e(g,{overflow:v?"auto":"visible",children:H}):H})]})]}))});export{h as ModalWindow};