Working layout editor
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user