import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Tab } from "@mui/material"; import React, { useState } from "react"; import { KeyValuePairTable, KeyValuePair, KeyValuePairTableProps } from "./KeyValuePair"; import Editor from "lib/components/Editor"; enum TabValue { QueryParams = "queryParams", Headers = "headers", Body = "body", } interface RequestTabsProps { queryParams: KeyValuePair[]; headers: KeyValuePair[]; onQueryParamChange?: KeyValuePairTableProps["onChange"]; onQueryParamDelete?: KeyValuePairTableProps["onDelete"]; onHeaderChange?: KeyValuePairTableProps["onChange"]; onHeaderDelete?: KeyValuePairTableProps["onDelete"]; body?: string | null; onBodyChange?: (value: string) => void; } function RequestTabs(props: RequestTabsProps): JSX.Element { const { queryParams, onQueryParamChange, onQueryParamDelete, headers, onHeaderChange, onHeaderDelete, body, onBodyChange, } = props; const [tabValue, setTabValue] = useState(TabValue.QueryParams); const tabSx = { textTransform: "none", }; const queryParamsLength = onQueryParamChange ? queryParams.length - 1 : queryParams.length; const headersLength = onHeaderChange ? headers.length - 1 : headers.length; return ( setTabValue(value)}> 1 ? "s" : "") + ")" : "")} sx={tabSx} /> { onBodyChange && onBodyChange(value || ""); }} monacoOptions={{ readOnly: onBodyChange === undefined }} contentType={headers.find(({ key }) => key.toLowerCase() === "content-type")?.value} /> ); } export default RequestTabs;