탭 처리 수정
This commit is contained in:
@@ -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;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user