탭 처리 수정

This commit is contained in:
현성필
2025-01-25 10:44:51 +09:00
parent e0fd69ea5a
commit 985a2c3039
+66 -49
View File
@@ -1,28 +1,50 @@
import React, {useEffect, useState} from 'react'; import React, {useEffect, useState} from 'react';
import APINavigation from "@/components/api-tester/APINavigation"; import APINavigation from '@/components/api-tester/APINavigation';
import APITabs from "@/components/api-tester/APITabs"; import APITabs from '@/components/api-tester/APITabs';
import { useAPI } from '@/providers/APIProvider.jsx'; import {useAPI} from '@/providers/APIProvider.jsx';
import ScenarioNavigation from '@/components/api-tester/ScenarioNavigation.jsx'; import ScenarioNavigation from '@/components/api-tester/ScenarioNavigation.jsx';
import ScenarioEditor from '@/components/api-tester/ScenarioEditor.jsx'; import ScenarioEditor from '@/components/api-tester/ScenarioEditor.jsx';
const MainContentArea = ({ isApiMode, toggleMode }) => { const MainContentArea = ({isApiMode, toggleMode}) => {
// Lift tab state up
const [apiRequests, setApiRequests] = useState([]);
const [currentIndex, setCurrentIndex] = useState(0);
return ( return (
<div className="h-[calc(100vh-57px)] w-full overflow-hidden"> <div className="h-[calc(100vh-57px)] w-full overflow-hidden">
{isApiMode ? <APIMode isApiMode={isApiMode} onToggleMode={toggleMode}/> : <ScenarioMode isApiMode={isApiMode} onToggleMode={toggleMode}/>} {isApiMode ? (
<APIMode
isApiMode={isApiMode}
onToggleMode={toggleMode}
apiRequests={apiRequests}
setApiRequests={setApiRequests}
currentIndex={currentIndex}
setCurrentIndex={setCurrentIndex}
/>
) : (
<ScenarioMode
isApiMode={isApiMode}
onToggleMode={toggleMode}
apiRequests={apiRequests}
setApiRequests={setApiRequests}
currentIndex={currentIndex}
setCurrentIndex={setCurrentIndex}
/>
)}
</div> </div>
); );
}; };
// API 모드 // API 모드
const APIMode = ({ isApiMode, onToggleMode }) => { const APIMode = ({
const [apiRequests, setApiRequests] = useState([]); isApiMode,
const [currentIndex, setCurrentIndex] = useState(0); onToggleMode,
const { apiRequests,
collections, setApiRequests,
loadCollections, currentIndex,
loading, setCurrentIndex
error }) => {
} = useAPI(); const {collections, loadCollections} = useAPI();
useEffect(() => { useEffect(() => {
loadCollections(); loadCollections();
@@ -127,40 +149,35 @@ const APIMode = ({ isApiMode, onToggleMode }) => {
}; };
// 시나리오 모드 // 시나리오 모드
const ScenarioMode = ({ isApiMode, onToggleMode }) => ( const ScenarioMode = ({
<div className="scenario-mode flex flex-1 h-[calc(100vh-57px)]"> isApiMode,
{/* 왼쪽 고정: ScenarioNavigation */} onToggleMode,
<div className="navigation-sidebar min-w-[200px] border-r bg-gray-100"> }) => {
<ScenarioNavigation
contextPath="/" return (
side="left" <div className="scenario-mode flex flex-1 h-[calc(100vh-57px)]">
isApiMode={isApiMode} <div className="navigation-sidebar min-w-[200px] border-r bg-gray-100">
onToggleMode={onToggleMode} <ScenarioNavigation
/> contextPath="/"
side="left"
isApiMode={isApiMode}
onToggleMode={onToggleMode}
/>
</div>
<div className="editor flex-1 h-[calc(100vh-57px)] overflow-hidden">
<ScenarioEditor />
</div>
<div className="navigation-sidebar min-w-[200px] border-l bg-gray-100">
<APINavigation
contextPath="/"
side="right"
onApiSelect={handleApiSelect}
isApiMode={isApiMode}
onToggleMode={onToggleMode}
/>
</div>
</div> </div>
);
};
{/* 중앙: ScenarioEditor */} export default MainContentArea;
<div className="editor flex-1 h-[calc(100vh-57px)] overflow-hidden">
<ScenarioEditor/>
</div>
{/* 오른쪽 고정: APINavigation */}
<div className="navigation-sidebar min-w-[200px] border-l bg-gray-100">
<APINavigation contextPath="/"
side="right"
onApiSelect={(collectionId, apiId) => {
// Handle API selection
}}
onNewCollection={() => {
// Handle new collection creation
}}
isApiMode={isApiMode}
onToggleMode={onToggleMode}
/>
</div>
</div>
);
export default MainContentArea;