Fix playground (#5043)

Some code quality updates on the doc api playgrounds
This commit is contained in:
martmull 2024-04-19 18:18:08 +02:00 committed by GitHub
parent 14f97e2e80
commit 43f0b11aab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 33 deletions

View File

@ -3,6 +3,7 @@ import BrowserOnly from '@docusaurus/BrowserOnly';
import { explorerPlugin } from '@graphiql/plugin-explorer';
import { Theme, useTheme } from '@graphiql/react';
import { createGraphiQLFetcher } from '@graphiql/toolkit';
import { SubDoc } from '@site/src/components/token-form';
import Layout from '@theme/Layout';
import { GraphiQL } from 'graphiql';
@ -21,9 +22,6 @@ const GraphQlComponent = ({ token, baseUrl, path }) => {
const explorer = explorerPlugin({
showAttribution: true,
});
if (!baseUrl || !token) {
return <></>;
}
const fetcher = createGraphiQLFetcher({
url: baseUrl + '/' + path,
@ -47,6 +45,10 @@ const GraphQlComponent = ({ token, baseUrl, path }) => {
};
}, []);
if (!baseUrl || !token) {
return <></>;
}
return (
<div className="fullHeightPlayground">
<GraphiQL
@ -58,9 +60,9 @@ const GraphQlComponent = ({ token, baseUrl, path }) => {
);
};
const GraphQlPlayground = ({ subDoc }: { subDoc: 'core' | 'metadata' }) => {
const [token, setToken] = useState();
const [baseUrl, setBaseUrl] = useState();
const GraphQlPlayground = ({ subDoc }: { subDoc: SubDoc }) => {
const [token, setToken] = useState<string>();
const [baseUrl, setBaseUrl] = useState<string>();
const { setTheme } = useTheme();
useEffect(() => {
@ -99,7 +101,7 @@ const GraphQlPlayground = ({ subDoc }: { subDoc: 'core' | 'metadata' }) => {
children={children}
setToken={setToken}
setBaseUrl={setBaseUrl}
subdocName={subDoc}
subDoc={subDoc}
/>
)}
</BrowserOnly>

View File

@ -9,9 +9,11 @@ const Playground = ({
setToken,
setBaseUrl,
subDoc,
}: Partial<React.PropsWithChildren | TokenFormProps> & {
subDoc: string;
}) => {
}: Partial<React.PropsWithChildren> &
Omit<
TokenFormProps,
'isTokenValid' | 'setIsTokenValid' | 'setLoadingState'
>) => {
const [isTokenValid, setIsTokenValid] = useState(false);
const [isLoading, setIsLoading] = useState(false);
return (

View File

@ -1,18 +1,19 @@
import React, { useEffect, useState } from 'react';
import { TbApi, TbChevronLeft, TbLink } from 'react-icons/tb';
import { useHistory, useLocation } from '@docusaurus/router';
import { TbApi, TbChevronLeft, TbLink } from '@theme/icons';
import { parseJson } from 'nx/src/utils/json';
import tokenForm from '!css-loader!./token-form.css';
export type SubDoc = 'core' | 'metadata';
export type TokenFormProps = {
setOpenApiJson?: (json: object) => void;
setToken?: (token: string) => void;
setBaseUrl?: (baseUrl: string) => void;
isTokenValid: boolean;
setIsTokenValid: (boolean) => void;
setLoadingState: (boolean) => void;
subDoc?: string;
isTokenValid?: boolean;
setIsTokenValid?: (boolean) => void;
setLoadingState?: (boolean) => void;
subDoc?: SubDoc;
};
const TokenForm = ({
@ -141,25 +142,23 @@ const TokenForm = ({
onBlur={() => submitToken(token)}
/>
</div>
{!location.pathname.includes('rest-api') && (
<div className="inputWrapper" style={{ maxWidth: '100px' }}>
<select
className="select"
onChange={(event) =>
history.replace(
<div className="inputWrapper" style={{ maxWidth: '100px' }}>
<select
className="select"
onChange={(event) =>
history.replace(
'/' +
location.pathname.split('/').at(-2) +
'/' +
location.pathname.split('/').at(-2) +
'/' +
event.target.value,
)
}
value={location.pathname.split('/').at(-1)}
>
<option value="core">Core</option>
<option value="metadata">Metadata</option>
</select>
</div>
)}
event.target.value,
)
}
value={location.pathname.split('/').at(-1)}
>
<option value="core">Core</option>
<option value="metadata">Metadata</option>
</select>
</div>
</form>
</div>
);