diff --git a/plugins/graphiql/api-report.md b/plugins/graphiql/api-report.md index a879bd6489..c96966c585 100644 --- a/plugins/graphiql/api-report.md +++ b/plugins/graphiql/api-report.md @@ -72,10 +72,8 @@ export class GraphQLEndpoints implements GraphQLBrowseApi { static github(config: GithubEndpointConfig): GraphQLEndpoint; } -// Warning: (ae-missing-release-tag) "GraphiQLPage" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) -export function Router(): JSX.Element; +export const Router: () => JSX.Element; // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/graphiql/src/components/GraphiQLPage/GraphiQLPage.tsx b/plugins/graphiql/src/components/GraphiQLPage/GraphiQLPage.tsx new file mode 100644 index 0000000000..0b4399948a --- /dev/null +++ b/plugins/graphiql/src/components/GraphiQLPage/GraphiQLPage.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { useApi } from '@backstage/core-plugin-api'; +import useAsync from 'react-use/lib/useAsync'; +import 'graphiql/graphiql.css'; +import { graphQlBrowseApiRef } from '../../lib/api'; +import { GraphiQLBrowser } from '../GraphiQLBrowser'; +import { Typography } from '@material-ui/core'; +import { + Content, + Header, + HeaderLabel, + Page, + Progress, +} from '@backstage/core-components'; + +/** @public */ +export const GraphiQLPage = () => { + const graphQlBrowseApi = useApi(graphQlBrowseApiRef); + const endpoints = useAsync(() => graphQlBrowseApi.getEndpoints()); + + let content: JSX.Element; + + if (endpoints.loading) { + content = ( + + + + ); + } else if (endpoints.error) { + content = ( + + + {/* TODO: provide a proper error component */} + Failed to load GraphQL endpoints, {String(endpoints.error)} + + + ); + } else { + content = ( + + + + ); + } + + return ( + +
+ + +
+ {content} +
+ ); +};