From ea07d2646d17e34e3c865299cde30987466a3f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 10 Apr 2024 16:10:34 -0500 Subject: [PATCH] feat: name draggable --- .../tools/compare/components/TankControl.tsx | 10 +-- src/app/tools/compare/page.tsx | 84 ++++++++++--------- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/src/app/tools/compare/components/TankControl.tsx b/src/app/tools/compare/components/TankControl.tsx index f8f88bc86..a8f20cc39 100644 --- a/src/app/tools/compare/components/TankControl.tsx +++ b/src/app/tools/compare/components/TankControl.tsx @@ -2,21 +2,15 @@ import { LoopIcon, TrashIcon } from '@radix-ui/react-icons'; import { Dialog, Flex, IconButton } from '@radix-ui/themes'; import { use, useState } from 'react'; import { provisionDefinitions } from '../../../../core/blitzkrieg/provisionDefinitions'; -import { TankDefinition } from '../../../../core/blitzkrieg/tankDefinitions'; import { tankToCompareMember } from '../../../../core/blitzkrieg/tankToCompareMember'; -import { - CompareMember, - mutateCompareTemporary, -} from '../../../../stores/compare'; +import { mutateCompareTemporary } from '../../../../stores/compare'; import { TankSearch } from '../../tankopedia/components/TankSearch'; interface TankControlProps { index: number; - tank: TankDefinition; - members: CompareMember[]; } -export function TankControl({ index, tank, members }: TankControlProps) { +export function TankControl({ index }: TankControlProps) { const awaitedProvisionDefinitions = use(provisionDefinitions); const [switchTankDialogOpen, setSwitchTankDialogOpen] = useState(false); diff --git a/src/app/tools/compare/page.tsx b/src/app/tools/compare/page.tsx index d533e2071..3d678e999 100644 --- a/src/app/tools/compare/page.tsx +++ b/src/app/tools/compare/page.tsx @@ -331,20 +331,20 @@ export default function Page() { } function TankCard({ index, tank }: { index: number; tank: TankDefinition }) { - const image = useRef(null); + const draggable = useRef(null); useEffect(() => { const initial = new Vector2(); const current = new Vector2(); const delta = new Vector2(); const marker = new Vector2(); - let initialRect = image.current!.getBoundingClientRect(); + let initialRect = draggable.current!.getBoundingClientRect(); let dropIndex = -1; function handlePointerDown(event: PointerEvent) { event.preventDefault(); - initialRect = image.current!.getBoundingClientRect(); + initialRect = draggable.current!.getBoundingClientRect(); delta.set(0, 0); current.copy(initial.set(event.clientX, event.clientY)); @@ -375,18 +375,18 @@ export default function Page() { dropIndex = closest.index; closest.element.style.opacity = '1'; - image.current!.style.position = 'fixed'; - image.current!.style.cursor = 'grabbing'; - image.current!.style.zIndex = '1'; - image.current!.style.left = `${initialRect.left + delta.x}px`; - image.current!.style.top = `${initialRect.top + delta.y}px`; + draggable.current!.style.position = 'fixed'; + draggable.current!.style.cursor = 'grabbing'; + draggable.current!.style.zIndex = '1'; + draggable.current!.style.left = `${initialRect.left + delta.x}px`; + draggable.current!.style.top = `${initialRect.top + delta.y}px`; } function handlePointerUp(event: PointerEvent) { event.preventDefault(); - image.current!.style.position = 'static'; - image.current!.style.zIndex = 'unset'; - image.current!.style.cursor = 'grab'; + draggable.current!.style.position = 'static'; + draggable.current!.style.zIndex = 'unset'; + draggable.current!.style.cursor = 'grab'; insertionMarkers.forEach(({ element }) => { element.style.opacity = '0'; @@ -409,10 +409,13 @@ export default function Page() { dropIndex = -1; } - image.current?.addEventListener('pointerdown', handlePointerDown); + draggable.current?.addEventListener('pointerdown', handlePointerDown); return () => { - image.current?.removeEventListener('pointerdown', handlePointerDown); + draggable.current?.removeEventListener( + 'pointerdown', + handlePointerDown, + ); }; }, []); @@ -428,37 +431,42 @@ export default function Page() { gap="2" style={{ height: '100%' }} > - - {tank.name} + + - - - {tank.name} - + {tank.name} + + + {tank.name} + +