Working layout editor

This commit is contained in:
2026-02-28 13:41:51 +01:00
parent b543988f02
commit 78daab4cf4
4 changed files with 153 additions and 63 deletions
+28 -16
View File
@@ -12,7 +12,6 @@ import {
import { Collapsible, CollapsibleContent } from "../ui/collapsible";
import { ChevronDown, MoreHorizontal } from "lucide-react";
import { Route, Workspace, LayoutNode } from "@/lib/types";
import { useWorkspace } from "@/hooks/workspace";
import {
DropdownMenu,
DropdownMenuContent,
@@ -36,18 +35,29 @@ type Props = {
node: LayoutNode;
workspace: Workspace;
setRoute: (route: Route) => void;
addEntity: (
type: "todo" | "doc",
parentGroupId: string | null,
name?: string,
) => string | undefined;
addGroup: (name: string | undefined, parentGroupId: string | null) => string;
renameEntity: (entityId: string, newName: string) => void;
deleteEntity: (entityId: string) => void;
removeNode: (id: string) => void;
renameGroup: (id: string, name: string) => void;
};
export default function EntitySwitch({ node, workspace, setRoute }: Props) {
const {
renameEntity,
deleteEntity,
addEntity,
addGroup,
removeNode,
renameGroup,
} = useWorkspace();
export default function EntitySwitch({
node,
workspace,
setRoute,
addEntity,
addGroup,
renameEntity,
deleteEntity,
removeNode,
renameGroup,
}: Props) {
const [menuOpen, setMenuOpen] = useState(false);
const [dialogOpen, setDialogOpen] = useState(false);
const [dialogValue, setDialogValue] = useState("");
@@ -74,11 +84,7 @@ export default function EntitySwitch({ node, workspace, setRoute }: Props) {
renameEntity(node.entityId, dialogValue);
} else if (dialogMode === "add-item") {
const parentId = node.type === "group" ? node.id : null;
const id = addEntity("todo", parentId);
// optionally could rename newly created entity name
if (id && dialogValue) {
renameEntity(id, dialogValue);
}
addEntity("todo", parentId, dialogValue || "New list");
} else if (dialogMode === "add-group") {
const parentId = node.type === "group" ? node.id : null;
addGroup(dialogValue || "New group", parentId);
@@ -144,6 +150,12 @@ export default function EntitySwitch({ node, workspace, setRoute }: Props) {
node={child}
workspace={workspace}
setRoute={setRoute}
addEntity={addEntity}
addGroup={addGroup}
renameEntity={renameEntity}
deleteEntity={deleteEntity}
removeNode={removeNode}
renameGroup={renameGroup}
/>
))}
</SidebarMenu>