1- import { useState , useCallback , useContext , useMemo , forwardRef , ReactNode } from "react" ;
1+ import { useState , useCallback , useContext , useMemo , forwardRef , ReactNode , createContext } from "react" ;
22import { Button , Flex , Text , Heading , TextField , Separator , Dialog , Slot } from "@radix-ui/themes" ;
33import * as Form from "@radix-ui/react-form" ;
44import { useDocPageData } from "@site/src/hooks" ;
@@ -14,8 +14,18 @@ type FormData = {
1414 appId : string ;
1515} ;
1616
17+ type APIRequestEditParametersModalContextType = {
18+ isOpen : boolean ;
19+ setIsOpen : ( value : boolean ) => void ;
20+ } ;
21+
22+ const APIRequestEditParametersModalContext = createContext < APIRequestEditParametersModalContextType > (
23+ { } as APIRequestEditParametersModalContextType ,
24+ ) ;
25+
1726function APIRequestEditParametersModalContent ( { onSuccess } : { onSuccess : ( data : FormData ) => void } ) {
1827 const { apiName } = useContext ( APIRequestContext ) ;
28+ const { setIsOpen } = useContext ( APIRequestEditParametersModalContext ) ;
1929
2030 const apiDomain = useDocPageData ( "apiDomain" ) ;
2131 const apiBasePath = useDocPageData ( "apiBasePath" ) ;
@@ -45,16 +55,20 @@ function APIRequestEditParametersModalContent({ onSuccess }: { onSuccess: (data:
4555 onSuccess ( formValues ) ;
4656 } , [ formValues , onSuccess ] ) ;
4757
48- const onKeyDown = useCallback ( ( e ) => {
49- if ( e . key === "/" ) {
50- // Prevent triggering the search modal
51- e . stopPropagation ( ) ;
52- }
53-
54- if ( e . key === "Enter" ) {
55- handleSave ( ) ;
56- }
57- } , [ ] ) ;
58+ const onKeyDown = useCallback (
59+ ( e ) => {
60+ if ( e . key === "/" ) {
61+ // Prevent triggering the search modal
62+ e . stopPropagation ( ) ;
63+ }
64+
65+ if ( e . key === "Enter" ) {
66+ handleSave ( ) ;
67+ setIsOpen ( false ) ;
68+ }
69+ } ,
70+ [ handleSave ] ,
71+ ) ;
5872
5973 const handleCancel = useCallback ( ( ) => {
6074 setFormValues ( {
@@ -210,18 +224,22 @@ const APIRequestEditParametersModalRoot = ({
210224 children : ReactNode ;
211225 onSuccess : ( data : FormData ) => void ;
212226} ) => {
227+ const [ isOpen , setIsOpen ] = useState ( false ) ;
213228 return (
214- < Dialog . Root >
215- { children }
216- < APIRequestEditParametersModalContent onSuccess = { onSuccess } />
217- </ Dialog . Root >
229+ < APIRequestEditParametersModalContext . Provider value = { { isOpen, setIsOpen } } >
230+ < Dialog . Root onOpenChange = { setIsOpen } open = { isOpen } >
231+ { children }
232+ < APIRequestEditParametersModalContent onSuccess = { onSuccess } />
233+ </ Dialog . Root >
234+ </ APIRequestEditParametersModalContext . Provider >
218235 ) ;
219236} ;
220237
221238const APIRequestEditParametersModalTrigger = function APIRequestEditParametersModalTrigger ( props ) {
222239 const { children } = props ;
240+ const { setIsOpen } = useContext ( APIRequestEditParametersModalContext ) ;
223241
224- return < Dialog . Trigger > { children } </ Dialog . Trigger > ;
242+ return < Slot onClick = { ( ) => setIsOpen ( true ) } > { children } </ Slot > ;
225243} ;
226244
227245export const APIRequestEditParametersModal = {
0 commit comments