From b7536de37a77b94840e24876437a7e7700cc7283 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Thu, 22 Aug 2024 16:03:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BB=A8=ED=85=8D=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=9C=A0=ED=8B=B8=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=A1=9C=20=EB=B3=80=EA=B2=BD,=20=EA=B7=B8?= =?UTF-8?q?=EB=A6=AC=EB=93=9C=20=EC=84=A4=EC=A0=95=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Roof2.jsx | 28 ++++++++- src/components/SettingsModal.jsx | 57 +++++++++++++++++++ .../common/context-menu/QContextMenu.jsx} | 17 +++--- 3 files changed, 92 insertions(+), 10 deletions(-) create mode 100644 src/components/SettingsModal.jsx rename src/{util/context-util.js => components/common/context-menu/QContextMenu.jsx} (86%) diff --git a/src/components/Roof2.jsx b/src/components/Roof2.jsx index 102a7bea..4f3f110d 100644 --- a/src/components/Roof2.jsx +++ b/src/components/Roof2.jsx @@ -3,7 +3,7 @@ import { useCanvas } from '@/hooks/useCanvas' import { useEffect, useState, useRef } from 'react' import { Mode, useMode } from '@/hooks/useMode' -import { Button } from '@nextui-org/react' +import { Button, Checkbox, CheckboxGroup, RadioGroup, Radio, Input } from '@nextui-org/react' import RangeSlider from './ui/RangeSlider' import { useRecoilState, useRecoilValue } from 'recoil' import { @@ -21,7 +21,10 @@ import { getCanvasState, insertCanvasState } from '@/lib/canvas' import { calculateIntersection } from '@/util/canvas-util' import { QPolygon } from '@/components/fabric/QPolygon' import ThumbnailList from './ui/ThumbnailLIst' -import CanvasWithContextMenu from '@/util/context-util' +// import CanvasWithContextMenu from '@/util/context-util' +import QContextMenu from './common/context-menu/QContextMenu' +import { modalContent, modalState } from '@/store/modalAtom' +import SettingsModal from './SettingsModal' export default function Roof2() { const { canvas, handleRedo, handleUndo, setCanvasBackgroundWithDots, saveImage, addCanvas } = useCanvas('canvas') @@ -55,6 +58,15 @@ export default function Roof2() { const wall = useRecoilValue(wallState) + const [open, setOpen] = useRecoilState(modalState) + const [contents, setContent] = useRecoilState(modalContent) + + // const gridHandleClick = (e) => { + // console.log(e !== 'custom') + + // setIsCustomGridSetting(e !== 'custom') + // } + //canvas 썸네일 const [thumbnails, setThumbnails] = useState([]) const thumbnailProps = { @@ -530,6 +542,16 @@ export default function Roof2() { {canvas && ( <>
+ @@ -705,7 +727,7 @@ export default function Roof2() {
- {canvas !== undefined && } + {canvas !== undefined && }
) diff --git a/src/components/SettingsModal.jsx b/src/components/SettingsModal.jsx new file mode 100644 index 00000000..ec3b5b23 --- /dev/null +++ b/src/components/SettingsModal.jsx @@ -0,0 +1,57 @@ +import { useEffect, useState } from 'react' +import { Button, Checkbox, CheckboxGroup, RadioGroup, Radio, Input } from '@nextui-org/react' + +export default function SettingsModal() { + const [isCustomGridSetting, setIsCustomGridSetting] = useState(true) + const [ratioValue, setRatioValue] = useState('원치수') + + useEffect(() => { + setIsCustomGridSetting(ratioValue !== 'custom') + }, [ratioValue]) + + return ( + <> +
+

점 그리드 설정

+ +
+ + mm +
+ +

Selected: {ratioValue}

+ + + 원치수 + 1/2 + 1/4 + 1/10 + 임의간격 + + + 종횡연동 + +
+ + mm +
+
+ + mm +
+
+ + + +
+
+ + ) +} diff --git a/src/util/context-util.js b/src/components/common/context-menu/QContextMenu.jsx similarity index 86% rename from src/util/context-util.js rename to src/components/common/context-menu/QContextMenu.jsx index 0179fdf0..57aaf45b 100644 --- a/src/util/context-util.js +++ b/src/components/common/context-menu/QContextMenu.jsx @@ -1,10 +1,15 @@ -import React, { useState, useEffect, forwardRef, useContext } from 'react' +'use client' +import { useEffect, useState } from 'react' +import { useRecoilState, useRecoilValue } from 'recoil' -const CanvasWithContextMenu = forwardRef(({ canvasProps }, ref) => { +export default function QContextMenu(props) { + const { contextRef, canvasProps } = props + + // const children = useRecoilValue(modalContent) const [contextMenu, setContextMenu] = useState({ visible: false, x: 0, y: 0 }) useEffect(() => { - if (!ref.current) return + if (!contextRef.current) return const handleContextMenu = (e) => { e.preventDefault() //기존 contextmenu 막고 @@ -34,7 +39,7 @@ const CanvasWithContextMenu = forwardRef(({ canvasProps }, ref) => { document.removeEventListener('click', handleClick) document.removeEventListener('click', handleOutsideClick) } - }, [ref, contextMenu]) + }, [contextRef, contextMenu]) const handleMenuClick = (option) => { alert(`option ${option} clicked`) @@ -60,6 +65,4 @@ const CanvasWithContextMenu = forwardRef(({ canvasProps }, ref) => { )} ) -}) - -export default CanvasWithContextMenu +}