From c024a893cdd8b5fb73a2d0a160b41e26c03a4904 Mon Sep 17 00:00:00 2001 From: minsik Date: Thu, 12 Sep 2024 14:06:36 +0900 Subject: [PATCH] =?UTF-8?q?-=20modal=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20CanvasMenu=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.js | 3 +- src/components/floor-plan/CanvasMenu.jsx | 19 ++++--- src/components/floor-plan/FloorPlan.jsx | 27 +++++++--- src/components/floor-plan/MenuDepth01.jsx | 53 +++++++++++-------- .../modal/outerlinesetting/OuterLineWall.jsx | 15 ++---- .../modal/setting01/SettingModal01.jsx | 18 ++----- src/store/modalAtom.js | 14 +++-- 7 files changed, 81 insertions(+), 68 deletions(-) diff --git a/src/app/layout.js b/src/app/layout.js index 4d4a4f21..fd3a242d 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -8,6 +8,7 @@ import { ToastContainer } from 'react-toastify' import './globals.css' import '../styles/style.scss' import Header from '@/components/header/Header' +import QModal from '@/components/common/modal/QModal' const inter = Inter({ subsets: ['latin'] }) @@ -29,7 +30,7 @@ export default function RootLayout({ children }) { - {/**/} + diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 45896d96..6c53e9ba 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -1,22 +1,20 @@ 'use client' import { useState } from 'react' import MenuDepth01 from './MenuDepth01' -import { useRecoilState } from 'recoil' -import { modalState } from '@/store/modalAtom' import QSelectBox from '@/components/common/select/QSelectBox' import { useMessage } from '@/hooks/useMessage' -export default function CanvasMenu() { - const [modalOption, setModalOption] = useRecoilState(modalState) //modal 열림닫힘 state +export default function CanvasMenu(props) { + const { setShowCanvasSettingModal, showOutlineModal, setShowOutlineModal } = props const [menuNumber, setMenuNumber] = useState(null) const [vertical, setVertical] = useState(true) const { getMessage } = useMessage() const SelectOption = [{ name: '瓦53A' }, { name: '瓦53A' }] const onClickNav = (number) => { setMenuNumber(number) - if (menuNumber === number) { - setMenuNumber(null) - } + } + const menuProps = { + setShowOutlineModal, } return (
@@ -37,7 +35,8 @@ export default function CanvasMenu() {
  • { - setModalOption({ ...modalOption, outerwall: true }) + if (!showOutlineModal) setShowOutlineModal(true) + // setModalOption({ ...modalOption, outerwall: true }) onClickNav(2) }} > @@ -87,7 +86,7 @@ export default function CanvasMenu() {
  • - +
    @@ -143,7 +142,7 @@ export default function CanvasMenu() {
    - {menuNumber === 2 && } + {menuNumber === 2 && } {menuNumber === 3 && } {menuNumber === 4 && }
    diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index 1577227d..fd8dfe93 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -4,20 +4,35 @@ import CanvasMenu from '@/components/floor-plan/CanvasMenu' import SettingModal01 from '@/components/floor-plan/modal/setting01/SettingModal01' import CanvasLayout from '@/components/floor-plan/CanvasLayout' import '@/styles/contents.scss' -import { modalState } from '@/store/modalAtom' -import { useRecoilValue } from 'recoil' import OuterLineWall from '@/components/floor-plan/modal/outerlinesetting/OuterLineWall' +import { useState } from 'react' export default function FloorPlan() { - const modalOption = useRecoilValue(modalState) + const [showCanvasSettingModal, setShowCanvasSettingModal] = useState(false) + const [showOutlineModal, setShowOutlineModal] = useState(false) + + const canvasSettingProps = { + setShowCanvasSettingModal, + } + + const outlineProps = { + setShowOutlineModal, + } + + const modalProps = { + setShowCanvasSettingModal, + showOutlineModal, + setShowOutlineModal, + } + return ( <>
    - +
    - {modalOption.option && } - {modalOption.outerwall && } + {showCanvasSettingModal && } + {showOutlineModal && }
    diff --git a/src/components/floor-plan/MenuDepth01.jsx b/src/components/floor-plan/MenuDepth01.jsx index ce4bd6a4..08eac1f4 100644 --- a/src/components/floor-plan/MenuDepth01.jsx +++ b/src/components/floor-plan/MenuDepth01.jsx @@ -2,33 +2,42 @@ import { ToggleonMouse } from '@/components/header/Header' import { useMessage } from '@/hooks/useMessage' +import { useEffect, useState } from 'react' -export default function MenuDepth01() { +export default function MenuDepth01(props) { + const { setShowOutlineModal } = props const { getMessage } = useMessage() + const [activeMenu, setActiveMenu] = useState(0) + const onClickMenu = (menuNum) => { + setActiveMenu(menuNum) + setShowOutlineModal(menuNum === 0) + } + + const menus = [ + { id: 0, name: '外壁線を描' }, + { id: 1, name: '補助線を描' }, + { id: 2, name: '屋根形状設定' }, + { id: 3, name: '軒下変更' }, + { id: 4, name: '外壁線の上げ下げ' }, + { id: 5, name: '銅線移動' }, + { id: 6, name: '特殊コーナー形状' }, + ] + + useEffect(() => { + menus.forEach((menu) => { + menu.isActive = menu.id === activeMenu + }) + }, [menus, activeMenu]) return (
      -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • + {menus.map((menu) => { + return ( +
    • + +
    • + ) + })}
    • ToggleonMouse(e, 'add', 'ul')} onMouseLeave={(e) => ToggleonMouse(e, 'remove', 'ul')}> diff --git a/src/components/floor-plan/modal/outerlinesetting/OuterLineWall.jsx b/src/components/floor-plan/modal/outerlinesetting/OuterLineWall.jsx index 1ba1c597..b57e2cb0 100644 --- a/src/components/floor-plan/modal/outerlinesetting/OuterLineWall.jsx +++ b/src/components/floor-plan/modal/outerlinesetting/OuterLineWall.jsx @@ -2,25 +2,18 @@ import { useState } from 'react' import WithDraggable from '@/components/common/draggable/withDraggable' -import { modalState } from '@/store/modalAtom' -import { useRecoilState } from 'recoil' import { useMessage } from '@/hooks/useMessage' -export default function OuterLineWall() { - const [modalOption, setModalOption] = useRecoilState(modalState) //modal 열림닫힘 state +export default function OuterLineWall(props) { + const { setShowOutlineModal } = props const [buttonAct, setButtonAct] = useState(1) - const [close, setClose] = useState(false) const { getMessage } = useMessage() const HandleClickClose = () => { - setClose(true) - setTimeout(() => { - setModalOption({ ...modalOption, outerwall: false }) - setClose(false) - }, 180) + setShowOutlineModal(false) } return ( -
      +

      {getMessage('modal.cover.outline.drawing')}

      diff --git a/src/store/modalAtom.js b/src/store/modalAtom.js index 819669a1..a9a708ac 100644 --- a/src/store/modalAtom.js +++ b/src/store/modalAtom.js @@ -2,8 +2,14 @@ import { atom } from 'recoil' export const modalState = atom({ key: 'modalState', - default: { - option: false, - outerwall: false, - }, + default: false, +}) + +export const modalContent = atom({ + key: 'modalContent', + default: ( + <> +
      test
      + + ), })