diff --git a/src/components/control_panel.jsx b/src/components/control_panel.jsx
index 5672f21..9073f41 100644
--- a/src/components/control_panel.jsx
+++ b/src/components/control_panel.jsx
@@ -1,4 +1,4 @@
-import { React, useState } from "react";
+import { React, useContext, useState } from "react";
import {
IconCaretdown,
IconChevronRight,
@@ -22,6 +22,7 @@ import {
import { toPng, toJpeg, toSvg } from "html-to-image";
import { saveAs } from "file-saver";
import { enterFullscreen, exitFullscreen } from "../utils";
+import { LayoutContext } from "../pages/editor";
export default function ControlPanel(props) {
const [visible, setVisible] = useState(false);
@@ -30,6 +31,7 @@ export default function ControlPanel(props) {
`diagram_${new Date().toISOString()}`
);
const [extension, setExtension] = useState("");
+ const {layout, setLayout} = useContext(LayoutContext);
const menu = {
File: {
@@ -237,7 +239,7 @@ export default function ControlPanel(props) {
return (
- {props.layout.header && header()}
+ {layout.header && header()}
{layoutDropdown()}
@@ -341,10 +343,10 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
header: !prev.header,
}))
@@ -532,14 +534,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
tables: !prev.tables,
}))
@@ -549,14 +551,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
relationships: !prev.relationships,
}))
@@ -566,14 +568,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
issues: !prev.issues,
}))
@@ -583,14 +585,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
editor: !prev.editor,
}))
@@ -600,14 +602,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
shapes: !prev.shapes,
}))
@@ -620,14 +622,14 @@ export default function ControlPanel(props) {
>
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
sidebar: !prev.sidebar,
}))
@@ -638,14 +640,14 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() =>
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
services: !prev.services,
}))
@@ -656,19 +658,19 @@ export default function ControlPanel(props) {
) : (
)
}
onClick={() => {
- if (props.layout.fullscreen) {
+ if (layout.fullscreen) {
exitFullscreen();
} else {
enterFullscreen();
}
- props.setLayout((prev) => ({
+ setLayout((prev) => ({
...prev,
fullscreen: !prev.fullscreen,
}));
diff --git a/src/components/table.jsx b/src/components/table.jsx
index 6ef6524..b39a228 100644
--- a/src/components/table.jsx
+++ b/src/components/table.jsx
@@ -1,4 +1,4 @@
-import { React, useState } from "react";
+import { React, useState, useContext } from "react";
// import { sqlDataTypes } from "../data/data";
import { IconEdit, IconPlus, IconMore, IconMinus } from "@douyinfe/semi-icons";
import {
@@ -10,12 +10,15 @@ import {
Popover,
Tag,
Button,
+ SideSheet,
} from "@douyinfe/semi-ui";
+import { LayoutContext } from "../pages/editor";
export default function Table(props) {
const [isHovered, setIsHovered] = useState(false);
const [hoveredField, setHoveredField] = useState(-1);
- // const [visible, setVisible] = useState(false);
+ const [visible, setVisible] = useState(false);
+ const {layout} = useContext(LayoutContext);
// const [editFieldVisible, setEditFieldVisible] = useState(-1);
// const [field, setField] = useState({
// name: "",
@@ -73,6 +76,7 @@ export default function Table(props) {
opacity: "0.7",
marginRight: "6px",
}}
+ onClick={() => setVisible(true)}
>
}
@@ -106,11 +110,16 @@ export default function Table(props) {
) : (
{props.tableData.indices.map((index, k) => (
-
+
{index.fields.map((f) => (
- {f}
+
+ {f}
+
))}
@@ -250,6 +259,14 @@ export default function Table(props) {
})}
+
setVisible((prev) => !prev)}
+ >
+ This is the content of a basic sidesheet.
+ Here is more content...
+
);
}
diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx
index 2bc9bbd..5c9826d 100644
--- a/src/pages/editor.jsx
+++ b/src/pages/editor.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from "react";
+import React, { useState, createContext } from "react";
import Sidebar from "../components/sidebar";
import ControlPanel from "../components/control_panel";
import { DndProvider } from "react-dnd";
@@ -6,6 +6,8 @@ import { HTML5Backend } from "react-dnd-html5-backend";
import Canvas from "../components/canvas";
import EditorPanel from "../components/editor_panel";
+export const LayoutContext = createContext();
+
export default function Editor(props) {
const [code, setCode] = useState("");
const [tables, setTables] = useState([]);
@@ -31,21 +33,38 @@ export default function Editor(props) {
if (w > 340) setWidth(w);
};
+ const value = {layout, setLayout};
+
return (
-
-
-
setResize(false)}
- onMouseMove={dragHandler}
- >
-
- {layout.sidebar && (
-
+
+
+
setResize(false)}
+ onMouseMove={dragHandler}
+ >
+
+ {layout.sidebar && (
+
+ )}
+
- )}
-
-
- {layout.services && }
+
+ {layout.services && }
+
-
+
);
}