import { useState, useRef } from 'react' import { useRouter } from 'next/router' import Head from 'next/head' import Link from 'next/link' import OperationObject from './partials/operation-object' import DocsPage from '@hashicorp/react-docs-page' import { getPathsFromSchema, getPropsForPage } from './utils/routing-utils' import styles from './openapi-page.module.css' import useOnClickOutside from 'lib/hooks/use-on-click-outside' function OpenApiPage({ info, operationCategory, sidenavOrder, productName, productSlug, pathFromRoot, }) { const router = useRouter() const operationsRef = useRef(null) const [expandedOperations, setExpandedOperations] = useState([]) useOnClickOutside(operationsRef, () => setExpandedOperations([])) function setOperationState(slug, isExpanded) { const newStates = expandedOperations.filter((s) => s !== slug) if (isExpanded) newStates.push(slug) setExpandedOperations(newStates) } const pageTitle = operationCategory ? operationCategory.name : info.title return (
{operationCategory ? (

{info.title}

{operationCategory.name}

{operationCategory.operations.map((op) => { const isExpanded = expandedOperations.indexOf(op.operationId) !== -1 return ( setOperationState(op.operationId, !isCollapsed) } /> ) })}
) : (

{info.title}

Select a service from the sidebar.

)}
) } export { getPathsFromSchema, getPropsForPage } export default OpenApiPage