Skip to content
Snippets Groups Projects
Commit 8de18df4 authored by Maximilian Giller's avatar Maximilian Giller :squid:
Browse files

Implemented simple tab view

parent 5372b8dc
No related branches found
No related tags found
No related merge requests found
Pipeline #57023 passed
......@@ -10,6 +10,7 @@ import Instructions from "./instructions";
import { Node } from "../../common/graph/node";
import { NodeType, NodeTypeData } from "../../common/graph/nodetype";
import { EditorSettings, NodeDataChangeRequest } from "../editor";
import TabHeader from "./tabheader";
interface SidepanelProps {
graph: DynamicGraph;
......@@ -62,26 +63,38 @@ function Sidepanel({
<button onClick={onSave}>Save</button>
</div>
<hr />
<NodeDetails
selectedNodes={selectedNodes}
idToObjectType={graph.idToObjectGroup}
onNodeDataChange={onNodeDataChange}
createCheckpoint={createCheckpoint}
/>
<hr />
<NodeTypesEditor
nodeTypes={graph.objectGroups}
onNodeTypeSelect={onNodeTypeSelect}
onNodeTypeCreation={onNodeTypeCreation}
onNodeTypeDelete={onNodeTypeDelete}
onNodeTypeDataChange={onNodeTypeDataChange}
createCheckpoint={createCheckpoint}
/>
<hr />
<Settings settings={settings} onSettingsChange={onSettingsChange} />
<hr />
<TabHeader tabs={["Edit", "Types", "Help"]}>
{/* Edit-Tab */}
<NodeDetails
selectedNodes={selectedNodes}
idToObjectType={graph.idToObjectGroup}
onNodeDataChange={onNodeDataChange}
createCheckpoint={createCheckpoint}
/>
{/* Types-Tab */}
<NodeTypesEditor
nodeTypes={graph.objectGroups}
onNodeTypeSelect={onNodeTypeSelect}
onNodeTypeCreation={onNodeTypeCreation}
onNodeTypeDelete={onNodeTypeDelete}
onNodeTypeDataChange={onNodeTypeDataChange}
createCheckpoint={createCheckpoint}
/>
{/* Help-Tab */}
<div>
<Settings
settings={settings}
onSettingsChange={onSettingsChange}
/>
<hr />
<Instructions connectOnDragEnabled={settings.connectOnDrag} />
<Instructions
connectOnDragEnabled={settings.connectOnDrag}
/>
</div>
</TabHeader>
</div>
);
}
......
div#ks-editor .tab-header {
display: flex;
margin-top: 0.2em;
margin-bottom: 0.5em;
}
div#ks-editor .tab-button {
display: block;
font-size: medium;
padding: 0.2em 0.5em;
border-bottom: 1px solid gray;
margin-bottom: 1px;
margin-right: 0.2em;
cursor: default;
}
div#ks-editor .tab-button:hover {
margin-bottom: 0px;
border-bottom: 2px solid gray;
}
div#ks-editor .tab-button.tab-open {
font-weight: bold;
margin-bottom: 0px;
border-bottom: 2px solid black;
}
import React, { useState } from "react";
import "./tabheader.css";
interface TabHeaderProps {
tabs: string[];
initialTabIndex?: number;
children: React.ReactNode[];
}
function TabHeader({ tabs, initialTabIndex, children }: TabHeaderProps) {
if (initialTabIndex === undefined) {
initialTabIndex = 0;
}
const [currentIndex, setCurrentIndex] = useState<number>(initialTabIndex);
return (
<div className={"tab-view"}>
<div className={"tab-header"}>
{tabs.map((name: string, index: number) => (
<div
key={index}
className={
index === currentIndex
? "tab-button tab-open"
: "tab-button"
}
onClick={() => setCurrentIndex(index)}
>
{name}
</div>
))}
</div>
<div>{children[currentIndex]}</div>
</div>
);
}
export default TabHeader;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment