From 157634a0ebb68c96825391e6eca4eea0c08b2b8c Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:50:18 +0300 Subject: [PATCH] brrr --- src/components/area.jsx | 250 +++++++++++++++++++++++++++--- src/components/area_overview.jsx | 3 +- src/components/control_panel.jsx | 18 +-- src/components/notes_overview.jsx | 2 - src/components/table.jsx | 6 +- 5 files changed, 231 insertions(+), 48 deletions(-) diff --git a/src/components/area.jsx b/src/components/area.jsx index e96abd0..8e20db5 100644 --- a/src/components/area.jsx +++ b/src/components/area.jsx @@ -1,13 +1,33 @@ import { React, useContext, useState } from "react"; -import { Button } from "@douyinfe/semi-ui"; -import { IconEdit } from "@douyinfe/semi-icons"; -import { Tab } from "../data/data"; -import { LayoutContext, TabContext } from "../pages/editor"; +import { Button, Popover, Input, Toast } from "@douyinfe/semi-ui"; +import { + IconEdit, + IconCheckboxTick, + IconDeleteStroked, +} from "@douyinfe/semi-icons"; +import { + Tab, + Action, + ObjectType, + tableThemes, + defaultTableTheme, +} from "../data/data"; +import { + AreaContext, + LayoutContext, + TabContext, + UndoRedoContext, +} from "../pages/editor"; export default function Area(props) { const [hovered, setHovered] = useState(false); + const [visible, setVisible] = useState(false); + const [saved, setSaved] = useState(false); + const [editField, setEditField] = useState(""); const { layout } = useContext(LayoutContext); const { tab, setTab } = useContext(TabContext); + const { updateArea, deleteArea } = useContext(AreaContext); + const { setUndoStack, setRedoStack } = useContext(UndoRedoContext); const handleMouseDown = (e, dir) => { props.setResize({ id: props.areaData.id, dir: dir }); @@ -24,7 +44,11 @@ export default function Area(props) { return ( setHovered(true)} - onMouseLeave={() => setHovered(false)} + onMouseLeave={() => { + setHovered(false); + setVisible(false); + setSaved(false); + }} > {hovered && (
- + +
+ Edit subject area +
+
+ + updateArea(props.areaData.id, { name: value }) + } + onFocus={(e) => setEditField({ name: e.target.value })} + onBlur={(e) => { + setSaved(true); + if (e.target.value === editField.name) return; + setUndoStack((prev) => [ + ...prev, + { + action: Action.EDIT, + element: ObjectType.AREA, + aid: props.areaData.id, + undo: editField, + redo: { name: e.target.value }, + }, + ]); + setRedoStack([]); + }} + /> + +
+
Theme
+ +
+
+
+
+ {tableThemes + .slice(0, Math.ceil(tableThemes.length / 2)) + .map((c) => ( + + ))} +
+
+ {tableThemes + .slice(Math.ceil(tableThemes.length / 2)) + .map((c) => ( + + ))} +
+
+
+ } + trigger="click" + position="bottomLeft" + showArrow + > +
+ +
+
+ + +
+
+ } + trigger="custom" + position="rightTop" + showArrow + > + + )}
diff --git a/src/components/area_overview.jsx b/src/components/area_overview.jsx index 0c2e0a0..dead6fd 100644 --- a/src/components/area_overview.jsx +++ b/src/components/area_overview.jsx @@ -222,8 +222,7 @@ export default function AreaOverview(props) {