From 363936641a31b0b508197d41bea1ce116931b5d4 Mon Sep 17 00:00:00 2001 From: Paweł Bernaciak Date: Sat, 20 Jan 2024 11:03:44 +0100 Subject: New element creator --- frontend/src/components/ElementView.tsx | 58 ++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 5 deletions(-) (limited to 'frontend/src/components/ElementView.tsx') diff --git a/frontend/src/components/ElementView.tsx b/frontend/src/components/ElementView.tsx index 4f9d489..1b11ffb 100644 --- a/frontend/src/components/ElementView.tsx +++ b/frontend/src/components/ElementView.tsx @@ -2,15 +2,63 @@ import { FC } from 'react'; import { Element } from '../types'; interface ElementViewProps { + onElementCombine: (elementId: number) => void; element: Element; + interactive: boolean; + isPreview: boolean; } -const ElementView: FC = ({ element }) => { +const ElementView: FC = ({ + onElementCombine, + element, + interactive, + isPreview, +}) => { + const onDragStart = (e: React.DragEvent) => { + e.stopPropagation(); + + e.dataTransfer.setData('text/plain', element.name); + e.dataTransfer.setData('id', element.id.toString()); + }; + + const onDragOver = (e: React.DragEvent) => { + e.preventDefault(); + }; + + const onDrop = (e: React.DragEvent) => { + const elementId = e.dataTransfer.getData('id'); + onElementCombine(Number.parseInt(elementId)); + e.preventDefault(); + }; + return ( -
-
- -

{element.name}

+
+
+ {isPreview ? ( +
+ ) : ( + + )} + + {element.name.length > 0 ? element.name : '\u00A0'} +
); -- cgit v1.2.3