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
+}