Skip to content

Commit a96ea34

Browse files
committed
Fix modal state when no values are provided
1 parent c63ee58 commit a96ea34

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

src/components/APIRequest/APIRequestClient.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ const APIRequestClientTrigger = forwardRef<HTMLElement, { children: ReactNode }>
6464

6565
useEffect(() => {
6666
if (!client) return;
67-
console.log("mounting scalar");
6867
const mountingEl = document.getElementById("docusaurus-scalar-root");
69-
console.log("mountingEl", mountingEl);
7068
client.mount(mountingEl);
7169
}, [client]);
7270

src/components/APIRequest/APIRequestCodeSnippet.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ export function APIRequestCodeSnippetSegmentedControl() {
3939
}, [apiName, apiDomain, coreDomain]);
4040

4141
const onEditConfigurationSuccess = useCallback(
42-
(data) => {
43-
apiClient.updateConfig({
42+
async (data) => {
43+
if (!apiClient) return;
44+
await apiClient.updateConfig({
4445
content: replaceVariablesForScalar(apiDocument, apiName, data),
4546
});
4647
if (!shouldConfigureServer) return;

src/components/APIRequest/APIRequestEditParametersModal.tsx

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState, useCallback, useContext, useMemo, forwardRef, ReactNode } from "react";
1+
import { useState, useCallback, useContext, useMemo, forwardRef, ReactNode, createContext } from "react";
22
import { Button, Flex, Text, Heading, TextField, Separator, Dialog, Slot } from "@radix-ui/themes";
33
import * as Form from "@radix-ui/react-form";
44
import { 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+
1726
function 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

221238
const 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

227245
export const APIRequestEditParametersModal = {

0 commit comments

Comments
 (0)