- updateNote(props.data.id, { title: value })
+ updateNote(data.id, { title: value })
}
onFocus={(e) => setEditField({ title: e.target.value })}
onBlur={(e) => {
@@ -167,7 +169,7 @@ export default function Note(props) {
{
action: Action.EDIT,
element: ObjectType.NOTE,
- nid: props.data.id,
+ nid: data.id,
undo: editField,
redo: { title: e.target.value },
message: `Edit note title to "${e.target.value}"`,
@@ -193,17 +195,17 @@ export default function Note(props) {
{
action: Action.EDIT,
element: ObjectType.NOTE,
- nid: props.data.id,
- undo: { color: props.data.color },
+ nid: data.id,
+ undo: { color: data.color },
redo: { color: c },
message: `Edit note color to ${c}`,
},
]);
setRedoStack([]);
- updateNote(props.data.id, { color: c });
+ updateNote(data.id, { color: c });
}}
>
- {props.data.color === c ? (
+ {data.color === c ? (
@@ -220,7 +222,7 @@ export default function Note(props) {
>
@@ -231,7 +233,7 @@ export default function Note(props) {
block
onClick={() => {
Toast.success(`Note deleted!`);
- deleteNote(props.data.id, true);
+ deleteNote(data.id, true);
}}
>
Delete
@@ -253,18 +255,21 @@ export default function Note(props) {
}}
onClick={() => {
if (layout.sidebar) {
- setTab(Tab.notes);
- if (tab !== Tab.notes) return;
+ setSelectedElement((prev) => ({
+ ...prev,
+ currentTab: Tab.notes,
+ }));
+ if (selectedElement.currentTab !== Tab.notes) return;
document
- .getElementById(`scroll_note_${props.data.id}`)
+ .getElementById(`scroll_note_${data.id}`)
.scrollIntoView({ behavior: "smooth" });
} else {
- setSelectedElement({
+ setSelectedElement((prev) => ({
+ ...prev,
element: ObjectType.NOTE,
- id: props.data.id,
- openDialogue: true,
- openCollapse: false,
- });
+ id: data.id,
+ open: true,
+ }));
}
}}
>
diff --git a/src/components/SidePanel.jsx b/src/components/SidePanel.jsx
index a59e5c5..60fd3e5 100644
--- a/src/components/SidePanel.jsx
+++ b/src/components/SidePanel.jsx
@@ -1,18 +1,17 @@
-import { useContext } from "react";
import { Tabs } from "@douyinfe/semi-ui";
+import { Tab } from "../data/data";
import TableOverview from "./TableOverview";
import ReferenceOverview from "./ReferenceOverview";
import AreaOverview from "./AreaOverview";
-import { Tab } from "../data/data";
-import { TabContext } from "../pages/Editor";
import NotesOverview from "./NotesOverview";
-import Issues from "./Issues";
import TypesOverview from "./TypesOverview";
+import Issues from "./Issues";
import useLayout from "../hooks/useLayout";
+import useSelect from "../hooks/useSelect";
-const SidePanel = (props) => {
- const { tab, setTab } = useContext(TabContext);
+export default function SidePanel({ width, resize, setResize }) {
const { layout } = useLayout();
+ const { selectedElement, setSelectedElement } = useSelect();
const tabList = [
{ tab: "Tables", itemKey: Tab.tables },
@@ -22,30 +21,32 @@ const SidePanel = (props) => {
{ tab: "Types", itemKey: Tab.types },
];
const contentList = [
-