diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx index e3cf6d617..6e7086815 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Request/index.tsx @@ -11,7 +11,6 @@ import React, { useState } from "react"; import { useDoc } from "@docusaurus/plugin-content-docs/client"; import { translate } from "@docusaurus/Translate"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; import Accept from "@theme/ApiExplorer/Accept"; import Authorization from "@theme/ApiExplorer/Authorization"; import Body from "@theme/ApiExplorer/Body"; @@ -30,6 +29,7 @@ import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; import { OPENAPI_REQUEST } from "@theme/translationIds"; import { ParameterObject } from "docusaurus-plugin-openapi-docs/src/openapi/types"; import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; import * as sdk from "postman-collection"; import { FormProvider, useForm } from "react-hook-form"; @@ -200,7 +200,7 @@ function Request({ item }: { item: ApiItem }) { const showServerOptions = serverOptions.length > 0; const showAcceptOptions = acceptOptions.length > 1; const showRequestBody = contentType !== undefined; - const showRequestButton = item.servers && !hideSendButton; + const showRequestButton = (item.servers || proxy) && !hideSendButton; const showAuth = authSelected !== undefined; const showParams = allParams.length > 0; const requestBodyRequired = item.requestBody?.required; @@ -210,7 +210,8 @@ function Request({ item }: { item: ApiItem }) { !showAuth && !showParams && !showRequestBody && - !showServerOptions + !showServerOptions && + !showRequestButton ) { return null; } diff --git a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx index f5afd532e..7954aa935 100644 --- a/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx +++ b/packages/docusaurus-theme-openapi-docs/src/theme/ApiExplorer/Response/index.tsx @@ -10,6 +10,7 @@ import React from "react"; import { useDoc } from "@docusaurus/plugin-content-docs/client"; import { usePrismTheme } from "@docusaurus/theme-common"; import { translate } from "@docusaurus/Translate"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import ApiCodeBlock from "@theme/ApiExplorer/ApiCodeBlock"; import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks"; import SchemaTabs from "@theme/SchemaTabs"; @@ -17,6 +18,7 @@ import TabItem from "@theme/TabItem"; import { OPENAPI_RESPONSE } from "@theme/translationIds"; import clsx from "clsx"; import { ApiItem } from "docusaurus-plugin-openapi-docs/src/types"; +import type { ThemeConfig } from "docusaurus-theme-openapi-docs/src/types"; import { clearResponse, clearCode, clearHeaders } from "./slice"; @@ -42,7 +44,11 @@ function formatXml(xml: string) { function Response({ item }: { item: ApiItem }) { const metadata = useDoc(); + const { siteConfig } = useDocusaurusContext(); + const themeConfig = siteConfig.themeConfig as ThemeConfig; const hideSendButton = metadata.frontMatter.hide_send_button; + const proxy = + metadata.frontMatter.proxy ?? themeConfig.api?.proxy; const prismTheme = usePrismTheme(); const code = useTypedSelector((state: any) => state.response.code); const headers = useTypedSelector((state: any) => state.response.headers); @@ -57,7 +63,7 @@ function Response({ item }: { item: ApiItem }) { ? "openapi-response__dot--success" : "openapi-response__dot--info"); - if (!item.servers || hideSendButton) { + if ((!item.servers && !proxy) || hideSendButton) { return null; }