@progress/kendo-react-dialogs
Version:
React Dialogs provide modal and non-modal windows for showing additional information to the user. KendoReact Dialogs package
9 lines (8 loc) • 3.99 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react"),W=require("react-dom"),o=require("prop-types"),X=require("./DialogTitleBar.js"),U=require("./DialogActionsBar.js"),n=require("@progress/kendo-react-common"),k=require("./constants.js");function $(c){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const l in c)if(l!=="default"){const a=Object.getOwnPropertyDescriptor(c,l);Object.defineProperty(i,l,a.get?a:{enumerable:!0,get:()=>c[l]})}}return i.default=c,Object.freeze(i)}const t=$(V),J=$(W),G=n.createPropsContext(),O=t.forwardRef((c,i)=>{const l=n.useZIndexContext(),a=l?l+k.ZINDEX_DIALOGS_STEP:k.DEFAULT_DIALOGS_ZINDEX,T=t.useRef(null),r=t.useRef(null),u=t.useRef(n.getActiveElement(document)),h=n.usePropsContext(G,c),s=t.useMemo(()=>({...m,...h}),[h]),{title:y,width:v,height:S,children:p,minWidth:P,dir:_,style:x,themeColor:D,contentStyle:A,autoFocusedElement:f,appendTo:w,className:b,overlayStyle:M,modal:N=m.modal,closeIcon:R=m.closeIcon,autoFocus:C=m.autoFocus}=s,F=t.useCallback(()=>({props:s,element:r.current}),[s]);t.useImperativeHandle(T,F),t.useImperativeHandle(i,()=>T.current);const j=t.useMemo(()=>t.Children.toArray(p).filter(e=>!t.isValidElement(e)||e.type!==U.DialogActionsBar),[p]),q=t.useMemo(()=>t.Children.toArray(p).filter(e=>t.isValidElement(e)&&e.type===U.DialogActionsBar),[p]),{_id:B,contentId:I,id:E}=t.useMemo(()=>{const e=s.id,d=`${e!=null?e:"accessibility"}-id`,H=`dialog-title-${d}`,K=`dialog-content-${d}`;return{_id:d,contentId:K,id:e||H}},[s.id]),L=t.useCallback(()=>{if(r.current)if(C&&!f)r.current.focus();else if(!C&&f&&r.current){const e=r.current.querySelector(f);e==null||e.focus()}else{const e=[...n.FOCUSABLE_ELEMENTS].map(d=>d+":not(.k-dialog-titlebar *)");n.focusFirstFocusableChild(r.current,e)}},[C,f]);t.useEffect(()=>(L(),()=>{setTimeout(()=>{var e;!r.current&&u.current&&n.canUseDOM&&(document.contains(u.current)?u.current.focus():u.current.id&&((e=document.getElementById(u.current.id))==null||e.focus()))})}),[L]);const g=t.useCallback(e=>{e.preventDefault(),n.dispatchEvent(s.onClose,e,F(),void 0)},[s.onClose]),Z=t.useCallback(e=>{e.keyCode===n.Keys.esc&&s.onClose&&(e.preventDefault(),g(e)),n.keepFocusInContainer(e,r.current)},[s.onClose,g]),z=t.useMemo(()=>t.createElement(n.ZIndexContext.Provider,{value:a},t.createElement("div",{ref:r,[k.DATA_DIALOGS_ID]:B,className:"k-dialog-wrapper"+(b?" "+b:""),onKeyDown:Z,tabIndex:0,dir:_,style:{zIndex:a,...x}},N&&t.createElement("div",{className:"k-overlay",style:M}),t.createElement("div",{className:n.classNames("k-window k-dialog",{[`k-window-${D}`]:D}),role:"dialog","aria-labelledby":E,"aria-modal":!0,"aria-describedby":I,style:{width:v,height:S,minWidth:P}},y&&t.createElement(X.DialogTitleBar,{closeIcon:R,onCloseButtonClick:g,id:E},y),t.createElement("div",{className:"k-window-content k-dialog-content",style:A,id:I},j),q))),[a,B,b,Z,x,_,M,D,E,I,v,S,P,R,g,A,y,j,q,N]);return n.canUseDOM?w!==null?J.createPortal(z,w||document.body):z:null}),m={autoFocus:!1,modal:!0,closeIcon:!0},Q={autoFocus:o.bool,autoFocusedElement:o.string,title:o.any,className:o.string,closeIcon:o.bool,modal:o.bool,overlayStyle:o.object,width:o.oneOfType([o.number,o.string]),height:o.oneOfType([o.number,o.string]),minWidth:o.oneOfType([o.number,o.string]),onClose:o.func,children:o.node,id:o.string,dir:o.string,style:o.object,contentStyle:o.object,appendTo:o.any,themeColor:o.oneOf(["primary","dark","light"])};O.displayName="KendoReactDialog";O.propTypes=Q;exports.Dialog=O;exports.DialogDefaultProps=m;exports.DialogPropsContext=G;