- modal 버그 수정
- CanvasMenu 수정
This commit is contained in:
parent
34d7372c35
commit
c024a893cd
@ -8,6 +8,7 @@ import { ToastContainer } from 'react-toastify'
|
|||||||
import './globals.css'
|
import './globals.css'
|
||||||
import '../styles/style.scss'
|
import '../styles/style.scss'
|
||||||
import Header from '@/components/header/Header'
|
import Header from '@/components/header/Header'
|
||||||
|
import QModal from '@/components/common/modal/QModal'
|
||||||
|
|
||||||
const inter = Inter({ subsets: ['latin'] })
|
const inter = Inter({ subsets: ['latin'] })
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ export default function RootLayout({ children }) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ToastContainer />
|
<ToastContainer />
|
||||||
{/*<QModal />*/}
|
<QModal />
|
||||||
</RecoilRootWrapper>
|
</RecoilRootWrapper>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,22 +1,20 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import MenuDepth01 from './MenuDepth01'
|
import MenuDepth01 from './MenuDepth01'
|
||||||
import { useRecoilState } from 'recoil'
|
|
||||||
import { modalState } from '@/store/modalAtom'
|
|
||||||
import QSelectBox from '@/components/common/select/QSelectBox'
|
import QSelectBox from '@/components/common/select/QSelectBox'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
|
||||||
export default function CanvasMenu() {
|
export default function CanvasMenu(props) {
|
||||||
const [modalOption, setModalOption] = useRecoilState(modalState) //modal 열림닫힘 state
|
const { setShowCanvasSettingModal, showOutlineModal, setShowOutlineModal } = props
|
||||||
const [menuNumber, setMenuNumber] = useState(null)
|
const [menuNumber, setMenuNumber] = useState(null)
|
||||||
const [vertical, setVertical] = useState(true)
|
const [vertical, setVertical] = useState(true)
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
const SelectOption = [{ name: '瓦53A' }, { name: '瓦53A' }]
|
const SelectOption = [{ name: '瓦53A' }, { name: '瓦53A' }]
|
||||||
const onClickNav = (number) => {
|
const onClickNav = (number) => {
|
||||||
setMenuNumber(number)
|
setMenuNumber(number)
|
||||||
if (menuNumber === number) {
|
|
||||||
setMenuNumber(null)
|
|
||||||
}
|
}
|
||||||
|
const menuProps = {
|
||||||
|
setShowOutlineModal,
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className={`canvas-menu-wrap ${menuNumber === 2 || menuNumber === 3 || menuNumber === 4 ? 'active' : ''}`}>
|
<div className={`canvas-menu-wrap ${menuNumber === 2 || menuNumber === 3 || menuNumber === 4 ? 'active' : ''}`}>
|
||||||
@ -37,7 +35,8 @@ export default function CanvasMenu() {
|
|||||||
<li
|
<li
|
||||||
className={`canvas-menu-item ${menuNumber === 2 ? 'active' : ''}`}
|
className={`canvas-menu-item ${menuNumber === 2 ? 'active' : ''}`}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setModalOption({ ...modalOption, outerwall: true })
|
if (!showOutlineModal) setShowOutlineModal(true)
|
||||||
|
// setModalOption({ ...modalOption, outerwall: true })
|
||||||
onClickNav(2)
|
onClickNav(2)
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@ -87,7 +86,7 @@ export default function CanvasMenu() {
|
|||||||
<QSelectBox title={'瓦53A'} option={SelectOption} />
|
<QSelectBox title={'瓦53A'} option={SelectOption} />
|
||||||
</div>
|
</div>
|
||||||
<div className="btn-from">
|
<div className="btn-from">
|
||||||
<button className="btn04" onClick={() => setModalOption({ ...modalOption, option: true })}></button>
|
<button className="btn04" onClick={() => setShowCanvasSettingModal(true)}></button>
|
||||||
<button className="btn05"></button>
|
<button className="btn05"></button>
|
||||||
<button className="btn06"></button>
|
<button className="btn06"></button>
|
||||||
</div>
|
</div>
|
||||||
@ -143,7 +142,7 @@ export default function CanvasMenu() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={`canvas-depth2-wrap ${menuNumber === 2 || menuNumber === 3 || menuNumber === 4 ? 'active' : ''}`}>
|
<div className={`canvas-depth2-wrap ${menuNumber === 2 || menuNumber === 3 || menuNumber === 4 ? 'active' : ''}`}>
|
||||||
{menuNumber === 2 && <MenuDepth01 />}
|
{menuNumber === 2 && <MenuDepth01 {...menuProps} />}
|
||||||
{menuNumber === 3 && <MenuDepth01 />}
|
{menuNumber === 3 && <MenuDepth01 />}
|
||||||
{menuNumber === 4 && <MenuDepth01 />}
|
{menuNumber === 4 && <MenuDepth01 />}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -4,20 +4,35 @@ import CanvasMenu from '@/components/floor-plan/CanvasMenu'
|
|||||||
import SettingModal01 from '@/components/floor-plan/modal/setting01/SettingModal01'
|
import SettingModal01 from '@/components/floor-plan/modal/setting01/SettingModal01'
|
||||||
import CanvasLayout from '@/components/floor-plan/CanvasLayout'
|
import CanvasLayout from '@/components/floor-plan/CanvasLayout'
|
||||||
import '@/styles/contents.scss'
|
import '@/styles/contents.scss'
|
||||||
import { modalState } from '@/store/modalAtom'
|
|
||||||
import { useRecoilValue } from 'recoil'
|
|
||||||
import OuterLineWall from '@/components/floor-plan/modal/outerlinesetting/OuterLineWall'
|
import OuterLineWall from '@/components/floor-plan/modal/outerlinesetting/OuterLineWall'
|
||||||
|
import { useState } from 'react'
|
||||||
|
|
||||||
export default function FloorPlan() {
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="canvas-wrap">
|
<div className="canvas-wrap">
|
||||||
<CanvasMenu />
|
<CanvasMenu {...modalProps} />
|
||||||
<div className="canvas-content">
|
<div className="canvas-content">
|
||||||
<CanvasLayout />
|
<CanvasLayout />
|
||||||
{modalOption.option && <SettingModal01 />}
|
{showCanvasSettingModal && <SettingModal01 {...canvasSettingProps} />}
|
||||||
{modalOption.outerwall && <OuterLineWall />}
|
{showOutlineModal && <OuterLineWall {...outlineProps} />}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@ -2,33 +2,42 @@
|
|||||||
|
|
||||||
import { ToggleonMouse } from '@/components/header/Header'
|
import { ToggleonMouse } from '@/components/header/Header'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
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 { 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 (
|
return (
|
||||||
<div className="canvas-depth2-inner">
|
<div className="canvas-depth2-inner">
|
||||||
<ul className="canvas-depth2-list">
|
<ul className="canvas-depth2-list">
|
||||||
<li className="canvas-depth2-item active">
|
{menus.map((menu) => {
|
||||||
<button>外壁線を描</button>
|
return (
|
||||||
</li>
|
<li className={`canvas-depth2-item ${menu.id === activeMenu ? 'active' : ''}`}>
|
||||||
<li className="canvas-depth2-item">
|
<button onClick={() => onClickMenu(menu.id)}>{menu.name}</button>
|
||||||
<button>補助線を描</button>
|
|
||||||
</li>
|
|
||||||
<li className="canvas-depth2-item">
|
|
||||||
<button>屋根形状設定</button>
|
|
||||||
</li>
|
|
||||||
<li className="canvas-depth2-item">
|
|
||||||
<button>軒下変更</button>
|
|
||||||
</li>
|
|
||||||
<li className="canvas-depth2-item">
|
|
||||||
<button>外壁線の上げ下げ</button>
|
|
||||||
</li>
|
|
||||||
<li className="canvas-depth2-item">
|
|
||||||
<button>銅線移動</button>
|
|
||||||
</li>
|
|
||||||
<li className="canvas-depth2-item">
|
|
||||||
<button>特殊コーナー形状</button>
|
|
||||||
</li>
|
</li>
|
||||||
|
)
|
||||||
|
})}
|
||||||
</ul>
|
</ul>
|
||||||
<ul className="canvas-depth2-btn-list">
|
<ul className="canvas-depth2-btn-list">
|
||||||
<li className="depth2-btn-box" onMouseEnter={(e) => ToggleonMouse(e, 'add', 'ul')} onMouseLeave={(e) => ToggleonMouse(e, 'remove', 'ul')}>
|
<li className="depth2-btn-box" onMouseEnter={(e) => ToggleonMouse(e, 'add', 'ul')} onMouseLeave={(e) => ToggleonMouse(e, 'remove', 'ul')}>
|
||||||
|
|||||||
@ -2,25 +2,18 @@
|
|||||||
|
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import WithDraggable from '@/components/common/draggable/withDraggable'
|
import WithDraggable from '@/components/common/draggable/withDraggable'
|
||||||
import { modalState } from '@/store/modalAtom'
|
|
||||||
import { useRecoilState } from 'recoil'
|
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
|
||||||
export default function OuterLineWall() {
|
export default function OuterLineWall(props) {
|
||||||
const [modalOption, setModalOption] = useRecoilState(modalState) //modal 열림닫힘 state
|
const { setShowOutlineModal } = props
|
||||||
const [buttonAct, setButtonAct] = useState(1)
|
const [buttonAct, setButtonAct] = useState(1)
|
||||||
const [close, setClose] = useState(false)
|
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
const HandleClickClose = () => {
|
const HandleClickClose = () => {
|
||||||
setClose(true)
|
setShowOutlineModal(false)
|
||||||
setTimeout(() => {
|
|
||||||
setModalOption({ ...modalOption, outerwall: false })
|
|
||||||
setClose(false)
|
|
||||||
}, 180)
|
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<WithDraggable isShow={true}>
|
<WithDraggable isShow={true}>
|
||||||
<div className={`modal-pop-wrap ssm ${modalOption.outerwall ? 'mount' : ''} ${close ? 'unmount' : ''} `}>
|
<div className={`modal-pop-wrap ssm `}>
|
||||||
<div className="modal-head">
|
<div className="modal-head">
|
||||||
<h1 className="title">{getMessage('modal.cover.outline.drawing')}</h1>
|
<h1 className="title">{getMessage('modal.cover.outline.drawing')}</h1>
|
||||||
<button className="modal-close" onClick={HandleClickClose}>
|
<button className="modal-close" onClick={HandleClickClose}>
|
||||||
|
|||||||
@ -5,28 +5,18 @@ import FirstOption from './FirstOption'
|
|||||||
import WithDraggable from '@/components/common/draggable/withDraggable'
|
import WithDraggable from '@/components/common/draggable/withDraggable'
|
||||||
import SecondOption from '@/components/floor-plan/modal/setting01/SecondOption'
|
import SecondOption from '@/components/floor-plan/modal/setting01/SecondOption'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
import { modalState } from '@/store/modalAtom'
|
|
||||||
import { useRecoilState } from 'recoil'
|
|
||||||
|
|
||||||
export default function SettingModal01() {
|
export default function SettingModal01(props) {
|
||||||
const [modalOption, setModalOption] = useRecoilState(modalState) //modal 열림닫힘 state
|
const { setShowCanvasSettingModal } = props
|
||||||
const [buttonAct, setButtonAct] = useState(1)
|
const [buttonAct, setButtonAct] = useState(1)
|
||||||
const [close, setClose] = useState(false)
|
|
||||||
const HandleClickClose = () => {
|
|
||||||
setClose(true)
|
|
||||||
setTimeout(() => {
|
|
||||||
setModalOption({ ...modalOption, option: false })
|
|
||||||
setClose(false)
|
|
||||||
}, 180)
|
|
||||||
}
|
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<WithDraggable isShow={true}>
|
<WithDraggable isShow={true}>
|
||||||
<div className={`modal-pop-wrap sm ${modalOption.option ? 'mount' : ''} ${close ? 'unmount' : ''} `}>
|
<div className={`modal-pop-wrap sm`}>
|
||||||
<div className="modal-head">
|
<div className="modal-head">
|
||||||
<h1 className="title">{getMessage('modal.canvas.setting')}</h1>
|
<h1 className="title">{getMessage('modal.canvas.setting')}</h1>
|
||||||
<button className="modal-close" onClick={HandleClickClose}>
|
<button className="modal-close" onClick={() => setShowCanvasSettingModal(false)}>
|
||||||
닫기
|
닫기
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -2,8 +2,14 @@ import { atom } from 'recoil'
|
|||||||
|
|
||||||
export const modalState = atom({
|
export const modalState = atom({
|
||||||
key: 'modalState',
|
key: 'modalState',
|
||||||
default: {
|
default: false,
|
||||||
option: false,
|
})
|
||||||
outerwall: false,
|
|
||||||
},
|
export const modalContent = atom({
|
||||||
|
key: 'modalContent',
|
||||||
|
default: (
|
||||||
|
<>
|
||||||
|
<div>test</div>
|
||||||
|
</>
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user