From 8aeaf572bb97386f349277db0a138e447ebbb811 Mon Sep 17 00:00:00 2001 From: "hyojun.choi" Date: Tue, 8 Oct 2024 16:17:55 +0900 Subject: [PATCH 01/27] =?UTF-8?q?=EC=B2=98=EB=A7=88.=EC=BC=80=EB=9D=BC?= =?UTF-8?q?=EB=B0=94=EB=B3=80=EA=B2=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/roofcover/useEavesGableEdit.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/roofcover/useEavesGableEdit.js b/src/hooks/roofcover/useEavesGableEdit.js index 49943c04..d2c69303 100644 --- a/src/hooks/roofcover/useEavesGableEdit.js +++ b/src/hooks/roofcover/useEavesGableEdit.js @@ -45,6 +45,7 @@ export function useEavesGableEdit() { addCanvasMouseEventListener('mouse:down', mouseDownEvent) return () => { + canvas.discardActiveObject() wallLines.forEach((wallLine) => { convertLinesToPolygon(wallLine) }) From 875a3004fd5e9010c07c1e611da205981d1e67cc Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 8 Oct 2024 16:18:21 +0900 Subject: [PATCH 02/27] =?UTF-8?q?refactor:=20QInput=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=97=90=20useCallback=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/input/QInput.jsx | 32 ++++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/components/common/input/QInput.jsx b/src/components/common/input/QInput.jsx index 484d9859..aea2d66e 100644 --- a/src/components/common/input/QInput.jsx +++ b/src/components/common/input/QInput.jsx @@ -1,6 +1,8 @@ 'use client' -export default function QInput({ type, readOnly = false, options, value, onChange }) { +import { useCallback } from 'react' + +export default function QInput({ type, readOnly = false, options = [], value, onChange }) { // options = options || [ // { // id: 'one', @@ -19,14 +21,24 @@ export default function QInput({ type, readOnly = false, options, value, onChang // }, // ] - const handleChange = (e, optionValue) => { - if (type === 'radio') { + const handleChange = useCallback( + (e, optionValue) => { + if (type === 'radio') { + onChange(e.target.value) + } else { + const newValue = value.includes(optionValue) ? value.filter((v) => v !== optionValue) : [...value, optionValue] + onChange(newValue) + } + }, + [type, value, onChange], + ) + + const handleTextChange = useCallback( + (e) => { onChange(e.target.value) - } else { - const newValue = value.includes(optionValue) ? value.filter((v) => v !== optionValue) : [...value, optionValue] - onChange(newValue) - } - } + }, + [onChange], + ) return (
@@ -34,12 +46,12 @@ export default function QInput({ type, readOnly = false, options, value, onChang
{type === 'text' ? (
- onChange(e.target.value)} /> +
) : type === 'radio' || type === 'checkbox' ? (
{options?.map((option) => ( -
+
Date: Tue, 8 Oct 2024 16:20:38 +0900 Subject: [PATCH 03/27] =?UTF-8?q?refactor:=20components>ui>QSelect.jsx=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ui/QSelect.jsx | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 src/components/ui/QSelect.jsx diff --git a/src/components/ui/QSelect.jsx b/src/components/ui/QSelect.jsx deleted file mode 100644 index 198595d5..00000000 --- a/src/components/ui/QSelect.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Select, SelectItem } from '@nextui-org/react' -import styles from './QSelect.module.css' -import { useEffect } from 'react' - -const animals = [ - { key: 'cat', label: 'Cat' }, - { key: 'dog', label: 'Dog' }, - { key: 'elephant', label: 'Elephant' }, - { key: 'lion', label: 'Lion' }, - { key: 'tiger', label: 'Tiger' }, - { key: 'giraffe', label: 'Giraffe' }, - { key: 'dolphin', label: 'Dolphin' }, - { key: 'penguin', label: 'Penguin' }, - { key: 'zebra', label: 'Zebra' }, - { key: 'shark', label: 'Shark' }, - { key: 'whale', label: 'Whale' }, - { key: 'otter', label: 'Otter' }, - { key: 'crocodile', label: 'Crocodile' }, -] - -export default function QSelect() { - useEffect(() => {}, []) - return ( - <> -
- -
-
test
- - ) -} From f6a0a4318c26420f17f7d74115fa5719b3443b8a Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 8 Oct 2024 16:21:43 +0900 Subject: [PATCH 04/27] =?UTF-8?q?feat:=20common=20select=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Playground.jsx | 88 ++++++++++++++++++++++-- src/components/common/select/QSelect.jsx | 40 +++++++++++ 2 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 src/components/common/select/QSelect.jsx diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index dbae066f..ad866506 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -11,14 +11,15 @@ import { useMessage } from '@/hooks/useMessage' import { convertDwgToPng } from '@/lib/cadAction' import { cadFileNameState, googleMapFileNameState, useCadFileState, useGoogleMapFileState } from '@/store/canvasAtom' -import QSelect from '@/components/ui/QSelect' import { Button } from '@nextui-org/react' import ColorPicker from './common/color-picker/ColorPicker' import { useSwal } from '@/hooks/useSwal' import styles from './playground.module.css' import Image from 'next/image' + import QInput from './common/input/Qinput' +import QSelect from './common/select/QSelect' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) @@ -39,6 +40,7 @@ export default function Playground() { const [textInput, setTextInput] = useState('') const [radioInput, setRadioInput] = useState('') const [checkboxInput, setCheckboxInput] = useState([]) + const [selectedValue, setSelectedValue] = useState('') useEffect(() => { console.log('textInput:', textInput) }, [textInput]) @@ -48,6 +50,9 @@ export default function Playground() { useEffect(() => { console.log('checkboxInput:', checkboxInput) }, [checkboxInput]) + useEffect(() => { + console.log('selectedValue:', selectedValue) + }, [selectedValue]) const handleUsers = async () => { // const users = await get('/api/user/find-all') @@ -129,11 +134,28 @@ export default function Playground() { <>
이 영역은 테스트입니다.
-
- - +
+ + + +
+ +
+
- +
+ + + +
{testVar}
diff --git a/src/components/common/select/QSelect.jsx b/src/components/common/select/QSelect.jsx new file mode 100644 index 00000000..fcbbdc2c --- /dev/null +++ b/src/components/common/select/QSelect.jsx @@ -0,0 +1,40 @@ +'use client' + +import { useCallback } from 'react' + +export default function QSelect({ placeholder = '', options, disabled = false, dark = false, value, onChange }) { + // const options = [ + // { id: 's01', value: 'cat', name: '고양이' }, + // { id: 's02', value: 'dog', name: '개' }, + // { id: 's03', value: 'lion', name: '사자' }, + // { id: 's04', value: 'tiger', name: '호랑이' }, + // ] + + const handleChange = useCallback( + (e) => { + onChange(e.target.value) + }, + [onChange], + ) + + return ( +
+
+
+
+ +
+
+
+
+ ) +} From 8c165622921dd379b283bdcaa9318abc55d03f46 Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 8 Oct 2024 16:49:44 +0900 Subject: [PATCH 05/27] =?UTF-8?q?refactor:=20QSelect=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EB=82=B4=20placeholder=20=EC=98=B5?= =?UTF-8?q?=EC=85=94=EB=84=90=20=EC=B2=98=EB=A6=AC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Playground.jsx | 2 +- src/components/common/select/QSelect.jsx | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index ad866506..5d54c858 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -195,7 +195,7 @@ export default function Playground() {
+
+ mm +
+
+
+ ))} +
+
+
+
+
+

設定

+
+
+ + ドン + + 立つ + + + + +
+
+
+
+ {info &&
{info}
} + + ) +} diff --git a/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx new file mode 100644 index 00000000..883e1d40 --- /dev/null +++ b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx @@ -0,0 +1,258 @@ +import { useMessage } from '@/hooks/useMessage' +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useEffect, useState } from 'react' +import Image from 'next/image' +import PlacementSurface from '@/components/floor-plan/modal/placementSurface/PlacementSurface' + +export default function PlacementSurfaceSetting({}) { + const { getMessage } = useMessage() + const [selectedType, setSelectedType] = useState() + const [rotate, setRotate] = useState(0) + const [sideInversion, setSideInversion] = useState(false) + const [upsideInversion, setUpsideInversion] = useState(false) + /* type + * a: line 2 + * b: line 2 + diagonal 1 + * c: line 3 + * d: line 4 + * e: line 5 + * */ + const types = [ + { + id: 1, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { + isDiagonal: true, + value: 3500, + }, + ], + info: 'ⓘ ①の長さ入力後に対角線の長さを入力すると、②の長さを自動計算します。', + }, + { + id: 2, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 3, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 4, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 5, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 6, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + lineAmount: 3, + }, + { + id: 7, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 8, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 9, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 10, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 11, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 12, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 13, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 14, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 15, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 16, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 17, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + { + id: 18, + lines: [ + { isDiagonal: false, value: 4500 }, + { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 2600 }, + ], + }, + ] + + const getInversionState = () => { + // return `${getScale()} rotate(${90 * rotate}deg)` + return `${getScale()} ${getRotate()}` + // return `${getScale()}` + } + + const getScale = () => { + // if (rotate === 1 || rotate === 3) { + // return `scale(${sideInversion ? 1 : -1}, ${upsideInversion ? 1 : -1} )` + // } else { + // return `scale(${sideInversion ? -1 : 1}, ${upsideInversion ? -1 : 1} )` + // } + return `scale(${sideInversion ? -1 : 1}, ${upsideInversion ? -1 : 1})` + } + + const getRotate = () => { + // return `rotate(${sideInversion && upsideInversion ? 90 * rotate : sideInversion || upsideInversion ? -90 * rotate : 90 * rotate}deg)` + if (sideInversion !== upsideInversion) { + ;`rotate(${90 * rotate - 180}deg)` + } + return `rotate(${90 * rotate}deg)` + } + + useEffect(() => { + setSelectedType(types[0]) + }, []) + + return ( + +
+
+

屋根形状の設定

+ +
+
+
+ {types.map((type) => ( + + ))} +
+
+ + + + x:{upsideInversion ? 1 : 0} +
+ y:{sideInversion ? 1 : 0} +
+ rotate:{rotate} +
+ +
+ +
+
+
+
+ ) +} diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index 705550d5..b7bb20ec 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -26,6 +26,18 @@ $alert-color: #101010; } } +.normal-font { + font-size: 12px; + font-weight: 400; + color: #fff; +} + +.bold-font { + font-size: 12px; + font-weight: 500; + color: #fff; +} + .modal-pop-wrap { position: fixed; width: 100%; @@ -281,6 +293,10 @@ $alert-color: #101010; align-items: center; gap: 15px; padding-bottom: 15px; + + &.border { + border-bottom: 1px solid #424242; + } } .grid-option-wrap { @@ -977,18 +993,14 @@ $alert-color: #101010; transition: all .15s ease-in-out; .shape-box { + display: flex; + justify-content: center; + align-items: center; position: relative; width: 100%; height: 100%; background-color: #313131; border-radius: 2px; - - img { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } } &.act, @@ -1642,6 +1654,36 @@ $alert-color: #101010; .module-table-flex-wrap { display: flex; gap: 10px; + + .outline-form { + flex: 1; + } +} + +.module-box-tab { + display: flex; + + .module-btn { + flex: 1; + border-top: 1px solid #505050; + border-bottom: 1px solid #505050; + border-right: 1px solid #505050; + background-color: #454545; + color: #fff; + height: 30px; + font-size: 12px; + font-weight: 400; + + &:first-child { + border-left: 1px solid #505050; + } + + &.act { + border-color: #fff; + background-color: #fff; + color: #101010; + } + } } .module-table-box { @@ -1649,7 +1691,7 @@ $alert-color: #101010; background-color: #3D3D3D; border-radius: 2px; - .module-table-inneer { + .module-table-inner { padding: 10px; .outline-form { @@ -1657,5 +1699,129 @@ $alert-color: #101010; width: auto; } } + + .module-table-tit { + padding: 10px 0; + font-size: 12px; + color: #fff; + border-bottom: 1px solid #4D4D4D; + } + + .eaves-keraba-table { + width: 100%; + margin-top: 15px; + + .eaves-keraba-th { + width: 72px; + } + + .eaves-keraba-th, + .eaves-keraba-td { + padding-bottom: 5px; + } + } + + .self-table-tit { + font-size: 12px; + font-weight: 500; + color: #fff; + padding-bottom: 15px; + } + } + + .warning-guide { + padding: 20px; + + .warning { + color: #FFCACA; + max-height: 55px; + overflow-y: auto; + padding-right: 30px; + + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: #D9D9D9; + } + + &::-webkit-scrollbar-track { + background-color: transparent; + } + } + } +} + +.module-self-table { + display: table; + border-top: 1px solid #4D4D4D; + border-collapse: collapse; + width: 100%; + + .self-table-item { + display: table-row; + + .self-item-td, + .self-item-th { + display: table-cell; + vertical-align: middle; + border-bottom: 1px solid #4D4D4D; + } + + .self-item-th { + width: 60px; + font-size: 12px; + font-weight: 500; + color: #fff; + } + + .self-item-td { + font-size: 12px; + font-weight: 400; + color: #fff; + padding: 15px 20px; + } + } +} + +.self-table-flx { + display: flex; + align-items: center; + margin-top: 15px; + + button { + margin-left: auto; + } +} + +.hexagonal-wrap { + .hexagonal-item { + padding: 15px 0; + border-bottom: 1px solid #4D4D4D; + + &:first-child { + padding-top: 0; + } + + &:last-child { + padding-bottom: 0; + border: none; + } + + .hexagonal-flx-auto { + display: flex; + justify-content: space-between; + } + + .hexagonal-flx { + display: flex; + align-items: center; + + button { + margin-left: auto; + } + } } } \ No newline at end of file From a192c66c393514e28a05214300ba1562c8e076dc Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Tue, 8 Oct 2024 18:15:33 +0900 Subject: [PATCH 07/27] =?UTF-8?q?refactor:=20QInput,=20QSelect=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=82=B4=20div=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/input/QInput.jsx | 48 +++++++++++------------- src/components/common/select/QSelect.jsx | 32 ++++++---------- 2 files changed, 34 insertions(+), 46 deletions(-) diff --git a/src/components/common/input/QInput.jsx b/src/components/common/input/QInput.jsx index aea2d66e..39b8be08 100644 --- a/src/components/common/input/QInput.jsx +++ b/src/components/common/input/QInput.jsx @@ -41,32 +41,28 @@ export default function QInput({ type, readOnly = false, options = [], value, on ) return ( -
-
-
- {type === 'text' ? ( -
- -
- ) : type === 'radio' || type === 'checkbox' ? ( -
- {options?.map((option) => ( -
- handleChange(e, option.value)} - /> - -
- ))} -
- ) : null} + <> + {type === 'text' ? ( +
+
-
-
+ ) : type === 'radio' || type === 'checkbox' ? ( +
+ {options?.map((option) => ( +
+ handleChange(e, option.value)} + /> + +
+ ))} +
+ ) : null} + ) } diff --git a/src/components/common/select/QSelect.jsx b/src/components/common/select/QSelect.jsx index ba89ef04..acf0ac6b 100644 --- a/src/components/common/select/QSelect.jsx +++ b/src/components/common/select/QSelect.jsx @@ -18,25 +18,17 @@ export default function QSelect({ placeholder, options, disabled = false, dark = ) return ( -
-
-
-
- -
-
-
-
+ ) } From 3ed3b228edc5350061223d4053881b32118bbfe5 Mon Sep 17 00:00:00 2001 From: basssy Date: Tue, 8 Oct 2024 18:44:38 +0900 Subject: [PATCH 08/27] =?UTF-8?q?=EB=A9=94=EC=9D=B8=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/ja.json | 10 +++++++++- src/locales/ko.json | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/locales/ja.json b/src/locales/ja.json index 479c52b2..f497d2bb 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -351,5 +351,13 @@ "shed.width": "片流幅", "windage": "漂流", "windage.width": "漂流の出幅", - "write": "作成" + "write": "作成", + "main.storeId": "販売店ID", + "main.storeName": "販売店名", + "main.objectNo": "物件番号", + "main.faq": "FAQ", + "main.content.objectList": "最近の更新物件一覧", + "main.content.notice": "お知らせ", + "main.content.download1": "操作マニュアル", + "main.content.download2": "屋根の説明書" } diff --git a/src/locales/ko.json b/src/locales/ko.json index 0599fb74..5a1abbe0 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -357,5 +357,13 @@ "shed.width": "한쪽흐름 폭", "windage": "편류", "windage.width": "편류의 출폭", - "write": "작성" + "write": "작성", + "main.storeId": "판매점 ID", + "main.storeName": "판매점명", + "main.objectNo": "물건번호", + "main.faq": "FAQ", + "main.content.objectList": "최근 갱신 물건목록", + "main.content.notice": "공지사항", + "main.content.download1": "조작메뉴얼", + "main.content.download2": "지붕설명서" } From 67c52106e707b2c950a262bc0a6b1fdba1d722ee Mon Sep 17 00:00:00 2001 From: yjnoh Date: Thu, 10 Oct 2024 11:12:32 +0900 Subject: [PATCH 09/27] =?UTF-8?q?=EC=83=81=EB=8B=A8=20=EB=A9=94=EB=89=B4?= =?UTF-8?q?=20=EB=AF=B8=EB=85=B8=EC=B6=9C=20=EC=98=A4=EB=A5=98=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/auth/Join.jsx | 3 ++- src/components/auth/NewLogin.jsx | 4 ++-- .../floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx | 2 +- src/components/floor-plan/modal/eavesGable/EavesGableEdit.jsx | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/auth/Join.jsx b/src/components/auth/Join.jsx index 03fc8ecb..ae100e68 100644 --- a/src/components/auth/Join.jsx +++ b/src/components/auth/Join.jsx @@ -1,11 +1,12 @@ 'use client' -import { post } from '@/lib/Axios' +import { useAxios } from '@/hooks/useAxios' import { redirect } from 'next/navigation' import { useMessage } from '@/hooks/useMessage' export default function Join() { const { getMessage } = useMessage() + const { post } = useAxios() const joinProcess = async (formData) => { const param = { diff --git a/src/components/auth/NewLogin.jsx b/src/components/auth/NewLogin.jsx index 5b5bc83a..61c02abf 100644 --- a/src/components/auth/NewLogin.jsx +++ b/src/components/auth/NewLogin.jsx @@ -89,7 +89,7 @@ export default function NewLogin() { telNo: '336610', fax: null, email: 't10t@naver.com', - pwdInitYn: 'N', + pwdInitYn: 'Y', }) setSessionState({ @@ -105,7 +105,7 @@ export default function NewLogin() { telNo: '336610', fax: null, email: 't10t@naver.com', - pwdInitYn: 'N', + pwdInitYn: 'Y', }) // redirect('/') diff --git a/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx b/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx index d2aa2c9f..1732f3f7 100644 --- a/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx +++ b/src/components/floor-plan/modal/auxiliary/AuxiliaryDrawing.jsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { useMessage } from '@/hooks/useMessage' -import WithDraggable from '@/components/common/draggable/withDraggable' +import WithDraggable from '@/components/common/draggable/WithDraggable' import RightAngle from '@/components/floor-plan/modal/lineTypes/RightAngle' import DoublePitch from '@/components/floor-plan/modal/lineTypes/DoublePitch' import Angle from '@/components/floor-plan/modal/lineTypes/Angle' diff --git a/src/components/floor-plan/modal/eavesGable/EavesGableEdit.jsx b/src/components/floor-plan/modal/eavesGable/EavesGableEdit.jsx index 8a8da385..1267fe98 100644 --- a/src/components/floor-plan/modal/eavesGable/EavesGableEdit.jsx +++ b/src/components/floor-plan/modal/eavesGable/EavesGableEdit.jsx @@ -1,5 +1,5 @@ import { useMessage } from '@/hooks/useMessage' -import WithDraggable from '@/components/common/draggable/withDraggable' +import WithDraggable from '@/components/common/draggable/WithDraggable' import { useState } from 'react' import Eaves from '@/components/floor-plan/modal/eavesGable/type/Eaves' import Gable from '@/components/floor-plan/modal/eavesGable/type/Gable' From 816f711f5d875d03b4b5710864117c59ae1e3b51 Mon Sep 17 00:00:00 2001 From: minsik Date: Thu, 10 Oct 2024 13:05:17 +0900 Subject: [PATCH 10/27] =?UTF-8?q?-=20=EB=A9=B4=ED=98=95=EC=83=81=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=20=EB=AA=A8=EB=8B=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/shape/180deg/plane_tab01.svg | 12 +++++ .../canvas/shape/180deg/plane_tab02.svg | 14 +++++ .../canvas/shape/180deg/plane_tab03.svg | 18 +++++++ .../canvas/shape/180deg/plane_tab04.svg | 13 +++++ .../canvas/shape/180deg/plane_tab05.svg | 18 +++++++ .../canvas/shape/180deg/plane_tab06.svg | 18 +++++++ .../canvas/shape/180deg/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/180deg/plane_tab08.svg | 24 +++++++++ .../canvas/shape/180deg/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/180deg/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/180deg/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/180deg/plane_tab12.svg | 23 ++++++++ .../canvas/shape/180deg/plane_tab13.svg | 23 ++++++++ .../canvas/shape/180deg/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/180deg/plane_tab15.svg | 18 +++++++ .../canvas/shape/180deg/plane_tab16.svg | 24 +++++++++ .../canvas/shape/180deg/plane_tab17.svg | 22 ++++++++ .../canvas/shape/180deg/plane_tab18.svg | 16 ++++++ .../canvas/shape/270deg/plane_tab01.svg | 12 +++++ .../canvas/shape/270deg/plane_tab02.svg | 14 +++++ .../canvas/shape/270deg/plane_tab03.svg | 18 +++++++ .../canvas/shape/270deg/plane_tab04.svg | 13 +++++ .../canvas/shape/270deg/plane_tab05.svg | 18 +++++++ .../canvas/shape/270deg/plane_tab06.svg | 18 +++++++ .../canvas/shape/270deg/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/270deg/plane_tab08.svg | 24 +++++++++ .../canvas/shape/270deg/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/270deg/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/270deg/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/270deg/plane_tab12.svg | 23 ++++++++ .../canvas/shape/270deg/plane_tab13.svg | 23 ++++++++ .../canvas/shape/270deg/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/270deg/plane_tab15.svg | 18 +++++++ .../canvas/shape/270deg/plane_tab16.svg | 24 +++++++++ .../canvas/shape/270deg/plane_tab17.svg | 22 ++++++++ .../canvas/shape/270deg/plane_tab18.svg | 16 ++++++ .../images/canvas/shape/90deg/plane_tab01.svg | 12 +++++ .../images/canvas/shape/90deg/plane_tab02.svg | 14 +++++ .../images/canvas/shape/90deg/plane_tab03.svg | 18 +++++++ .../images/canvas/shape/90deg/plane_tab04.svg | 13 +++++ .../images/canvas/shape/90deg/plane_tab05.svg | 18 +++++++ .../images/canvas/shape/90deg/plane_tab06.svg | 18 +++++++ .../images/canvas/shape/90deg/plane_tab07.svg | 30 +++++++++++ .../images/canvas/shape/90deg/plane_tab08.svg | 24 +++++++++ .../images/canvas/shape/90deg/plane_tab09.svg | 28 ++++++++++ .../images/canvas/shape/90deg/plane_tab10.svg | 28 ++++++++++ .../images/canvas/shape/90deg/plane_tab11.svg | 28 ++++++++++ .../images/canvas/shape/90deg/plane_tab12.svg | 23 ++++++++ .../images/canvas/shape/90deg/plane_tab13.svg | 23 ++++++++ .../images/canvas/shape/90deg/plane_tab14.svg | 29 ++++++++++ .../images/canvas/shape/90deg/plane_tab15.svg | 18 +++++++ .../images/canvas/shape/90deg/plane_tab16.svg | 24 +++++++++ .../images/canvas/shape/90deg/plane_tab17.svg | 22 ++++++++ .../images/canvas/shape/90deg/plane_tab18.svg | 16 ++++++ .../canvas/shape/normal/plane_tab01.svg | 12 +++++ .../canvas/shape/normal/plane_tab02.svg | 14 +++++ .../canvas/shape/normal/plane_tab03.svg | 18 +++++++ .../canvas/shape/normal/plane_tab04.svg | 13 +++++ .../canvas/shape/normal/plane_tab05.svg | 18 +++++++ .../canvas/shape/normal/plane_tab06.svg | 18 +++++++ .../canvas/shape/normal/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/normal/plane_tab08.svg | 24 +++++++++ .../canvas/shape/normal/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/normal/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/normal/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/normal/plane_tab12.svg | 23 ++++++++ .../canvas/shape/normal/plane_tab13.svg | 23 ++++++++ .../canvas/shape/normal/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/normal/plane_tab15.svg | 18 +++++++ .../canvas/shape/normal/plane_tab16.svg | 24 +++++++++ .../canvas/shape/normal/plane_tab17.svg | 22 ++++++++ .../canvas/shape/normal/plane_tab18.svg | 16 ++++++ .../canvas/shape/re_180deg/plane_tab01.svg | 12 +++++ .../canvas/shape/re_180deg/plane_tab02.svg | 14 +++++ .../canvas/shape/re_180deg/plane_tab03.svg | 18 +++++++ .../canvas/shape/re_180deg/plane_tab04.svg | 13 +++++ .../canvas/shape/re_180deg/plane_tab05.svg | 18 +++++++ .../canvas/shape/re_180deg/plane_tab06.svg | 18 +++++++ .../canvas/shape/re_180deg/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/re_180deg/plane_tab08.svg | 24 +++++++++ .../canvas/shape/re_180deg/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/re_180deg/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/re_180deg/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/re_180deg/plane_tab12.svg | 23 ++++++++ .../canvas/shape/re_180deg/plane_tab13.svg | 23 ++++++++ .../canvas/shape/re_180deg/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/re_180deg/plane_tab15.svg | 18 +++++++ .../canvas/shape/re_180deg/plane_tab16.svg | 24 +++++++++ .../canvas/shape/re_180deg/plane_tab17.svg | 22 ++++++++ .../canvas/shape/re_180deg/plane_tab18.svg | 16 ++++++ .../canvas/shape/re_270deg/plane_tab01.svg | 12 +++++ .../canvas/shape/re_270deg/plane_tab02.svg | 14 +++++ .../canvas/shape/re_270deg/plane_tab03.svg | 18 +++++++ .../canvas/shape/re_270deg/plane_tab04.svg | 13 +++++ .../canvas/shape/re_270deg/plane_tab05.svg | 18 +++++++ .../canvas/shape/re_270deg/plane_tab06.svg | 18 +++++++ .../canvas/shape/re_270deg/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/re_270deg/plane_tab08.svg | 24 +++++++++ .../canvas/shape/re_270deg/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/re_270deg/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/re_270deg/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/re_270deg/plane_tab12.svg | 23 ++++++++ .../canvas/shape/re_270deg/plane_tab13.svg | 23 ++++++++ .../canvas/shape/re_270deg/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/re_270deg/plane_tab15.svg | 18 +++++++ .../canvas/shape/re_270deg/plane_tab16.svg | 24 +++++++++ .../canvas/shape/re_270deg/plane_tab17.svg | 22 ++++++++ .../canvas/shape/re_270deg/plane_tab18.svg | 16 ++++++ .../canvas/shape/re_90deg/plane_tab01.svg | 12 +++++ .../canvas/shape/re_90deg/plane_tab02.svg | 14 +++++ .../canvas/shape/re_90deg/plane_tab03.svg | 18 +++++++ .../canvas/shape/re_90deg/plane_tab04.svg | 13 +++++ .../canvas/shape/re_90deg/plane_tab05.svg | 18 +++++++ .../canvas/shape/re_90deg/plane_tab06.svg | 18 +++++++ .../canvas/shape/re_90deg/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/re_90deg/plane_tab08.svg | 24 +++++++++ .../canvas/shape/re_90deg/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/re_90deg/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/re_90deg/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/re_90deg/plane_tab12.svg | 23 ++++++++ .../canvas/shape/re_90deg/plane_tab13.svg | 23 ++++++++ .../canvas/shape/re_90deg/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/re_90deg/plane_tab15.svg | 18 +++++++ .../canvas/shape/re_90deg/plane_tab16.svg | 24 +++++++++ .../canvas/shape/re_90deg/plane_tab17.svg | 22 ++++++++ .../canvas/shape/re_90deg/plane_tab18.svg | 16 ++++++ .../canvas/shape/re_normal/plane_tab01.svg | 14 +++++ .../canvas/shape/re_normal/plane_tab02.svg | 14 +++++ .../canvas/shape/re_normal/plane_tab03.svg | 18 +++++++ .../canvas/shape/re_normal/plane_tab04.svg | 13 +++++ .../canvas/shape/re_normal/plane_tab05.svg | 18 +++++++ .../canvas/shape/re_normal/plane_tab06.svg | 18 +++++++ .../canvas/shape/re_normal/plane_tab07.svg | 30 +++++++++++ .../canvas/shape/re_normal/plane_tab08.svg | 24 +++++++++ .../canvas/shape/re_normal/plane_tab09.svg | 28 ++++++++++ .../canvas/shape/re_normal/plane_tab10.svg | 28 ++++++++++ .../canvas/shape/re_normal/plane_tab11.svg | 28 ++++++++++ .../canvas/shape/re_normal/plane_tab12.svg | 23 ++++++++ .../canvas/shape/re_normal/plane_tab13.svg | 23 ++++++++ .../canvas/shape/re_normal/plane_tab14.svg | 29 ++++++++++ .../canvas/shape/re_normal/plane_tab15.svg | 18 +++++++ .../canvas/shape/re_normal/plane_tab16.svg | 24 +++++++++ .../canvas/shape/re_normal/plane_tab17.svg | 22 ++++++++ .../canvas/shape/re_normal/plane_tab18.svg | 16 ++++++ src/components/floor-plan/CanvasMenu.jsx | 2 + src/components/floor-plan/FloorPlan.jsx | 4 +- src/components/floor-plan/MenuDepth01.jsx | 2 + .../placementSurface/PlacementSurface.jsx | 49 +++++++++++------ .../PlacementSurfaceSetting.jsx | 54 +++++++++---------- src/locales/ja.json | 2 + src/locales/ko.json | 2 + 151 files changed, 3160 insertions(+), 45 deletions(-) create mode 100644 public/static/images/canvas/shape/180deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/180deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/270deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/90deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/normal/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/re_180deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/re_270deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/re_90deg/plane_tab18.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab01.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab02.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab03.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab04.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab05.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab06.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab07.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab08.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab09.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab10.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab11.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab12.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab13.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab14.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab15.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab16.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab17.svg create mode 100644 public/static/images/canvas/shape/re_normal/plane_tab18.svg diff --git a/public/static/images/canvas/shape/180deg/plane_tab01.svg b/public/static/images/canvas/shape/180deg/plane_tab01.svg new file mode 100644 index 00000000..84c22986 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab02.svg b/public/static/images/canvas/shape/180deg/plane_tab02.svg new file mode 100644 index 00000000..21cf9082 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab03.svg b/public/static/images/canvas/shape/180deg/plane_tab03.svg new file mode 100644 index 00000000..46d3b5b2 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab04.svg b/public/static/images/canvas/shape/180deg/plane_tab04.svg new file mode 100644 index 00000000..4b4ceafa --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab05.svg b/public/static/images/canvas/shape/180deg/plane_tab05.svg new file mode 100644 index 00000000..40d9d32b --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab06.svg b/public/static/images/canvas/shape/180deg/plane_tab06.svg new file mode 100644 index 00000000..8c3e8f6e --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab07.svg b/public/static/images/canvas/shape/180deg/plane_tab07.svg new file mode 100644 index 00000000..aef6908b --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab08.svg b/public/static/images/canvas/shape/180deg/plane_tab08.svg new file mode 100644 index 00000000..6d4b6949 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab09.svg b/public/static/images/canvas/shape/180deg/plane_tab09.svg new file mode 100644 index 00000000..c135a87b --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab10.svg b/public/static/images/canvas/shape/180deg/plane_tab10.svg new file mode 100644 index 00000000..6a9ede6f --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab11.svg b/public/static/images/canvas/shape/180deg/plane_tab11.svg new file mode 100644 index 00000000..a84d6796 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab12.svg b/public/static/images/canvas/shape/180deg/plane_tab12.svg new file mode 100644 index 00000000..15e01d3a --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab13.svg b/public/static/images/canvas/shape/180deg/plane_tab13.svg new file mode 100644 index 00000000..48d8f87e --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab14.svg b/public/static/images/canvas/shape/180deg/plane_tab14.svg new file mode 100644 index 00000000..e94c8459 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab15.svg b/public/static/images/canvas/shape/180deg/plane_tab15.svg new file mode 100644 index 00000000..cc6f56f2 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab16.svg b/public/static/images/canvas/shape/180deg/plane_tab16.svg new file mode 100644 index 00000000..42d6ad2e --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab17.svg b/public/static/images/canvas/shape/180deg/plane_tab17.svg new file mode 100644 index 00000000..741f65d4 --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/180deg/plane_tab18.svg b/public/static/images/canvas/shape/180deg/plane_tab18.svg new file mode 100644 index 00000000..c59192ca --- /dev/null +++ b/public/static/images/canvas/shape/180deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab01.svg b/public/static/images/canvas/shape/270deg/plane_tab01.svg new file mode 100644 index 00000000..22b32884 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab02.svg b/public/static/images/canvas/shape/270deg/plane_tab02.svg new file mode 100644 index 00000000..105cf6f1 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab03.svg b/public/static/images/canvas/shape/270deg/plane_tab03.svg new file mode 100644 index 00000000..9f10a097 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab04.svg b/public/static/images/canvas/shape/270deg/plane_tab04.svg new file mode 100644 index 00000000..46d682bc --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab05.svg b/public/static/images/canvas/shape/270deg/plane_tab05.svg new file mode 100644 index 00000000..90be1d79 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab06.svg b/public/static/images/canvas/shape/270deg/plane_tab06.svg new file mode 100644 index 00000000..4ac8ec72 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab07.svg b/public/static/images/canvas/shape/270deg/plane_tab07.svg new file mode 100644 index 00000000..61ea3380 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab08.svg b/public/static/images/canvas/shape/270deg/plane_tab08.svg new file mode 100644 index 00000000..0d70143a --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab09.svg b/public/static/images/canvas/shape/270deg/plane_tab09.svg new file mode 100644 index 00000000..11af80b9 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab10.svg b/public/static/images/canvas/shape/270deg/plane_tab10.svg new file mode 100644 index 00000000..5b182179 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab11.svg b/public/static/images/canvas/shape/270deg/plane_tab11.svg new file mode 100644 index 00000000..b8f70b55 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab12.svg b/public/static/images/canvas/shape/270deg/plane_tab12.svg new file mode 100644 index 00000000..2a9d4ea6 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab13.svg b/public/static/images/canvas/shape/270deg/plane_tab13.svg new file mode 100644 index 00000000..3200c6cc --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab14.svg b/public/static/images/canvas/shape/270deg/plane_tab14.svg new file mode 100644 index 00000000..82fa8d99 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab15.svg b/public/static/images/canvas/shape/270deg/plane_tab15.svg new file mode 100644 index 00000000..eb47001c --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab16.svg b/public/static/images/canvas/shape/270deg/plane_tab16.svg new file mode 100644 index 00000000..ff7b570d --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab17.svg b/public/static/images/canvas/shape/270deg/plane_tab17.svg new file mode 100644 index 00000000..0ce3740a --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/270deg/plane_tab18.svg b/public/static/images/canvas/shape/270deg/plane_tab18.svg new file mode 100644 index 00000000..b0cbc443 --- /dev/null +++ b/public/static/images/canvas/shape/270deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab01.svg b/public/static/images/canvas/shape/90deg/plane_tab01.svg new file mode 100644 index 00000000..46476194 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab02.svg b/public/static/images/canvas/shape/90deg/plane_tab02.svg new file mode 100644 index 00000000..74d5a79c --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab03.svg b/public/static/images/canvas/shape/90deg/plane_tab03.svg new file mode 100644 index 00000000..8a1cf359 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab04.svg b/public/static/images/canvas/shape/90deg/plane_tab04.svg new file mode 100644 index 00000000..b06f007f --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab05.svg b/public/static/images/canvas/shape/90deg/plane_tab05.svg new file mode 100644 index 00000000..8f5be183 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab06.svg b/public/static/images/canvas/shape/90deg/plane_tab06.svg new file mode 100644 index 00000000..d269faab --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab07.svg b/public/static/images/canvas/shape/90deg/plane_tab07.svg new file mode 100644 index 00000000..998629bd --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab08.svg b/public/static/images/canvas/shape/90deg/plane_tab08.svg new file mode 100644 index 00000000..390997c4 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab09.svg b/public/static/images/canvas/shape/90deg/plane_tab09.svg new file mode 100644 index 00000000..bd4c9e53 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab10.svg b/public/static/images/canvas/shape/90deg/plane_tab10.svg new file mode 100644 index 00000000..40417b53 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab11.svg b/public/static/images/canvas/shape/90deg/plane_tab11.svg new file mode 100644 index 00000000..8bb5290a --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab12.svg b/public/static/images/canvas/shape/90deg/plane_tab12.svg new file mode 100644 index 00000000..bece8e29 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab13.svg b/public/static/images/canvas/shape/90deg/plane_tab13.svg new file mode 100644 index 00000000..bcb4307e --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab14.svg b/public/static/images/canvas/shape/90deg/plane_tab14.svg new file mode 100644 index 00000000..8d79bf02 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab15.svg b/public/static/images/canvas/shape/90deg/plane_tab15.svg new file mode 100644 index 00000000..4beac542 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab16.svg b/public/static/images/canvas/shape/90deg/plane_tab16.svg new file mode 100644 index 00000000..ed0456df --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab17.svg b/public/static/images/canvas/shape/90deg/plane_tab17.svg new file mode 100644 index 00000000..3fdb6160 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/90deg/plane_tab18.svg b/public/static/images/canvas/shape/90deg/plane_tab18.svg new file mode 100644 index 00000000..2072da99 --- /dev/null +++ b/public/static/images/canvas/shape/90deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab01.svg b/public/static/images/canvas/shape/normal/plane_tab01.svg new file mode 100644 index 00000000..121b7025 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab02.svg b/public/static/images/canvas/shape/normal/plane_tab02.svg new file mode 100644 index 00000000..61891248 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab03.svg b/public/static/images/canvas/shape/normal/plane_tab03.svg new file mode 100644 index 00000000..295e0d89 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab04.svg b/public/static/images/canvas/shape/normal/plane_tab04.svg new file mode 100644 index 00000000..894bb55c --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab05.svg b/public/static/images/canvas/shape/normal/plane_tab05.svg new file mode 100644 index 00000000..63b3c201 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab06.svg b/public/static/images/canvas/shape/normal/plane_tab06.svg new file mode 100644 index 00000000..1bad98a0 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab07.svg b/public/static/images/canvas/shape/normal/plane_tab07.svg new file mode 100644 index 00000000..a358f766 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab08.svg b/public/static/images/canvas/shape/normal/plane_tab08.svg new file mode 100644 index 00000000..22a72ab6 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab09.svg b/public/static/images/canvas/shape/normal/plane_tab09.svg new file mode 100644 index 00000000..756c3bfa --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab10.svg b/public/static/images/canvas/shape/normal/plane_tab10.svg new file mode 100644 index 00000000..fe4073ea --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab11.svg b/public/static/images/canvas/shape/normal/plane_tab11.svg new file mode 100644 index 00000000..0ac2cf59 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab12.svg b/public/static/images/canvas/shape/normal/plane_tab12.svg new file mode 100644 index 00000000..a68e7a39 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab13.svg b/public/static/images/canvas/shape/normal/plane_tab13.svg new file mode 100644 index 00000000..027e91e8 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab14.svg b/public/static/images/canvas/shape/normal/plane_tab14.svg new file mode 100644 index 00000000..7a3cef86 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab15.svg b/public/static/images/canvas/shape/normal/plane_tab15.svg new file mode 100644 index 00000000..c0c1b0bb --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab16.svg b/public/static/images/canvas/shape/normal/plane_tab16.svg new file mode 100644 index 00000000..c66484e3 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab17.svg b/public/static/images/canvas/shape/normal/plane_tab17.svg new file mode 100644 index 00000000..ae8ddd0f --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/normal/plane_tab18.svg b/public/static/images/canvas/shape/normal/plane_tab18.svg new file mode 100644 index 00000000..12bd0ad3 --- /dev/null +++ b/public/static/images/canvas/shape/normal/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab01.svg b/public/static/images/canvas/shape/re_180deg/plane_tab01.svg new file mode 100644 index 00000000..aab78f30 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab02.svg b/public/static/images/canvas/shape/re_180deg/plane_tab02.svg new file mode 100644 index 00000000..53390298 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab03.svg b/public/static/images/canvas/shape/re_180deg/plane_tab03.svg new file mode 100644 index 00000000..1e054827 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab04.svg b/public/static/images/canvas/shape/re_180deg/plane_tab04.svg new file mode 100644 index 00000000..1144da35 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab05.svg b/public/static/images/canvas/shape/re_180deg/plane_tab05.svg new file mode 100644 index 00000000..14546582 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab06.svg b/public/static/images/canvas/shape/re_180deg/plane_tab06.svg new file mode 100644 index 00000000..0eb57a1f --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab07.svg b/public/static/images/canvas/shape/re_180deg/plane_tab07.svg new file mode 100644 index 00000000..978ec35a --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab08.svg b/public/static/images/canvas/shape/re_180deg/plane_tab08.svg new file mode 100644 index 00000000..1de4559c --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab09.svg b/public/static/images/canvas/shape/re_180deg/plane_tab09.svg new file mode 100644 index 00000000..1f985b96 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab10.svg b/public/static/images/canvas/shape/re_180deg/plane_tab10.svg new file mode 100644 index 00000000..b8c9f9f4 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab11.svg b/public/static/images/canvas/shape/re_180deg/plane_tab11.svg new file mode 100644 index 00000000..353359a2 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab12.svg b/public/static/images/canvas/shape/re_180deg/plane_tab12.svg new file mode 100644 index 00000000..50e211f2 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab13.svg b/public/static/images/canvas/shape/re_180deg/plane_tab13.svg new file mode 100644 index 00000000..de614d35 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab14.svg b/public/static/images/canvas/shape/re_180deg/plane_tab14.svg new file mode 100644 index 00000000..902506e5 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab15.svg b/public/static/images/canvas/shape/re_180deg/plane_tab15.svg new file mode 100644 index 00000000..81839b00 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab16.svg b/public/static/images/canvas/shape/re_180deg/plane_tab16.svg new file mode 100644 index 00000000..df7fe001 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab17.svg b/public/static/images/canvas/shape/re_180deg/plane_tab17.svg new file mode 100644 index 00000000..a684fd04 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_180deg/plane_tab18.svg b/public/static/images/canvas/shape/re_180deg/plane_tab18.svg new file mode 100644 index 00000000..a3259150 --- /dev/null +++ b/public/static/images/canvas/shape/re_180deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab01.svg b/public/static/images/canvas/shape/re_270deg/plane_tab01.svg new file mode 100644 index 00000000..c225ea23 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab02.svg b/public/static/images/canvas/shape/re_270deg/plane_tab02.svg new file mode 100644 index 00000000..01b79908 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab03.svg b/public/static/images/canvas/shape/re_270deg/plane_tab03.svg new file mode 100644 index 00000000..dc0c23e7 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab04.svg b/public/static/images/canvas/shape/re_270deg/plane_tab04.svg new file mode 100644 index 00000000..5f61b284 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab05.svg b/public/static/images/canvas/shape/re_270deg/plane_tab05.svg new file mode 100644 index 00000000..d02eb0fb --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab06.svg b/public/static/images/canvas/shape/re_270deg/plane_tab06.svg new file mode 100644 index 00000000..d1ddabf5 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab07.svg b/public/static/images/canvas/shape/re_270deg/plane_tab07.svg new file mode 100644 index 00000000..bf213a02 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab08.svg b/public/static/images/canvas/shape/re_270deg/plane_tab08.svg new file mode 100644 index 00000000..cd9858e8 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab09.svg b/public/static/images/canvas/shape/re_270deg/plane_tab09.svg new file mode 100644 index 00000000..f82ee8cc --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab10.svg b/public/static/images/canvas/shape/re_270deg/plane_tab10.svg new file mode 100644 index 00000000..64444c46 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab11.svg b/public/static/images/canvas/shape/re_270deg/plane_tab11.svg new file mode 100644 index 00000000..bbd8fb3a --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab12.svg b/public/static/images/canvas/shape/re_270deg/plane_tab12.svg new file mode 100644 index 00000000..77321b0c --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab13.svg b/public/static/images/canvas/shape/re_270deg/plane_tab13.svg new file mode 100644 index 00000000..9e0fd3bb --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab14.svg b/public/static/images/canvas/shape/re_270deg/plane_tab14.svg new file mode 100644 index 00000000..921db3d0 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab15.svg b/public/static/images/canvas/shape/re_270deg/plane_tab15.svg new file mode 100644 index 00000000..caaad067 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab16.svg b/public/static/images/canvas/shape/re_270deg/plane_tab16.svg new file mode 100644 index 00000000..4fb31cf5 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab17.svg b/public/static/images/canvas/shape/re_270deg/plane_tab17.svg new file mode 100644 index 00000000..56465c10 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_270deg/plane_tab18.svg b/public/static/images/canvas/shape/re_270deg/plane_tab18.svg new file mode 100644 index 00000000..83868560 --- /dev/null +++ b/public/static/images/canvas/shape/re_270deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab01.svg b/public/static/images/canvas/shape/re_90deg/plane_tab01.svg new file mode 100644 index 00000000..36c1d46b --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab01.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab02.svg b/public/static/images/canvas/shape/re_90deg/plane_tab02.svg new file mode 100644 index 00000000..74d5a79c --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab03.svg b/public/static/images/canvas/shape/re_90deg/plane_tab03.svg new file mode 100644 index 00000000..7db0ea6e --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab04.svg b/public/static/images/canvas/shape/re_90deg/plane_tab04.svg new file mode 100644 index 00000000..19194f44 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab05.svg b/public/static/images/canvas/shape/re_90deg/plane_tab05.svg new file mode 100644 index 00000000..787b4dd2 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab06.svg b/public/static/images/canvas/shape/re_90deg/plane_tab06.svg new file mode 100644 index 00000000..311178db --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab07.svg b/public/static/images/canvas/shape/re_90deg/plane_tab07.svg new file mode 100644 index 00000000..91d6dc11 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab08.svg b/public/static/images/canvas/shape/re_90deg/plane_tab08.svg new file mode 100644 index 00000000..05cebb84 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab09.svg b/public/static/images/canvas/shape/re_90deg/plane_tab09.svg new file mode 100644 index 00000000..917eb40e --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab10.svg b/public/static/images/canvas/shape/re_90deg/plane_tab10.svg new file mode 100644 index 00000000..964f6b05 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab11.svg b/public/static/images/canvas/shape/re_90deg/plane_tab11.svg new file mode 100644 index 00000000..0e8112eb --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab12.svg b/public/static/images/canvas/shape/re_90deg/plane_tab12.svg new file mode 100644 index 00000000..6481f3fe --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab13.svg b/public/static/images/canvas/shape/re_90deg/plane_tab13.svg new file mode 100644 index 00000000..6c7a85fb --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab14.svg b/public/static/images/canvas/shape/re_90deg/plane_tab14.svg new file mode 100644 index 00000000..32f8d9a9 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab15.svg b/public/static/images/canvas/shape/re_90deg/plane_tab15.svg new file mode 100644 index 00000000..07217d6c --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab16.svg b/public/static/images/canvas/shape/re_90deg/plane_tab16.svg new file mode 100644 index 00000000..b9c7230b --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab17.svg b/public/static/images/canvas/shape/re_90deg/plane_tab17.svg new file mode 100644 index 00000000..f36070a0 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_90deg/plane_tab18.svg b/public/static/images/canvas/shape/re_90deg/plane_tab18.svg new file mode 100644 index 00000000..33bc4549 --- /dev/null +++ b/public/static/images/canvas/shape/re_90deg/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab01.svg b/public/static/images/canvas/shape/re_normal/plane_tab01.svg new file mode 100644 index 00000000..8fc73ac0 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab01.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab02.svg b/public/static/images/canvas/shape/re_normal/plane_tab02.svg new file mode 100644 index 00000000..61891248 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab02.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab03.svg b/public/static/images/canvas/shape/re_normal/plane_tab03.svg new file mode 100644 index 00000000..c6a52c40 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab03.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab04.svg b/public/static/images/canvas/shape/re_normal/plane_tab04.svg new file mode 100644 index 00000000..71f194d0 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab04.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab05.svg b/public/static/images/canvas/shape/re_normal/plane_tab05.svg new file mode 100644 index 00000000..8abc166e --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab05.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab06.svg b/public/static/images/canvas/shape/re_normal/plane_tab06.svg new file mode 100644 index 00000000..6aca72a5 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab06.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab07.svg b/public/static/images/canvas/shape/re_normal/plane_tab07.svg new file mode 100644 index 00000000..577ae1b1 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab07.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab08.svg b/public/static/images/canvas/shape/re_normal/plane_tab08.svg new file mode 100644 index 00000000..d9f3f324 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab08.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab09.svg b/public/static/images/canvas/shape/re_normal/plane_tab09.svg new file mode 100644 index 00000000..94f2ea1c --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab09.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab10.svg b/public/static/images/canvas/shape/re_normal/plane_tab10.svg new file mode 100644 index 00000000..0b051e22 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab10.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab11.svg b/public/static/images/canvas/shape/re_normal/plane_tab11.svg new file mode 100644 index 00000000..64b6796d --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab12.svg b/public/static/images/canvas/shape/re_normal/plane_tab12.svg new file mode 100644 index 00000000..8885243b --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab12.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab13.svg b/public/static/images/canvas/shape/re_normal/plane_tab13.svg new file mode 100644 index 00000000..3537d722 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab13.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab14.svg b/public/static/images/canvas/shape/re_normal/plane_tab14.svg new file mode 100644 index 00000000..440f09d1 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab14.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab15.svg b/public/static/images/canvas/shape/re_normal/plane_tab15.svg new file mode 100644 index 00000000..ff005996 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab15.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab16.svg b/public/static/images/canvas/shape/re_normal/plane_tab16.svg new file mode 100644 index 00000000..4ac68a72 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab16.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab17.svg b/public/static/images/canvas/shape/re_normal/plane_tab17.svg new file mode 100644 index 00000000..81b89809 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab17.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/shape/re_normal/plane_tab18.svg b/public/static/images/canvas/shape/re_normal/plane_tab18.svg new file mode 100644 index 00000000..34d44490 --- /dev/null +++ b/public/static/images/canvas/shape/re_normal/plane_tab18.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index 485b536e..ba9abb92 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -37,6 +37,7 @@ export default function CanvasMenu(props) { setShowOutlineModal, setShowPlaceShapeModal, setShowSlopeSettingModal, + setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowRoofShapeSettingModal, setShowObjectSettingModal, @@ -93,6 +94,7 @@ export default function CanvasMenu(props) { setShowAuxiliaryModal, setShowEavesGableEditModal, setShowSlopeSettingModal, + setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, setShowObjectSettingModal, diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index baa2c1d3..dc032ab0 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -33,6 +33,7 @@ export default function FloorPlan() { const [showRoofShapePassivitySettingModal, setShowRoofShapePassivitySettingModal] = useState(false) const [showAuxiliaryModal, setShowAuxiliaryModal] = useState(false) const [showSlopeSettingModal, setShowSlopeSettingModal] = useState(false) + const [showPlacementSurfaceSettingModal, setShowPlacementSurfaceSettingModal] = useState(false) const [showPlaceShapeDrawingModal, setShowPlaceShapeDrawingModal] = useState(false) const [showObjectSettingModal, setShowObjectSettingModal] = useState(false) const [showEavesGableEditModal, setShowEavesGableEditModal] = useState(false) @@ -65,6 +66,7 @@ export default function FloorPlan() { setShowOutlineModal, setShowPlaceShapeModal, setShowSlopeSettingModal, + setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowRoofShapeSettingModal, setShowObjectSettingModal, @@ -139,7 +141,7 @@ export default function FloorPlan() { {/**/} {showWallLineOffsetSettingModal && } {showObjectSettingModal && } - + {showPlacementSurfaceSettingModal && }
diff --git a/src/components/floor-plan/MenuDepth01.jsx b/src/components/floor-plan/MenuDepth01.jsx index 64ba320d..e5394610 100644 --- a/src/components/floor-plan/MenuDepth01.jsx +++ b/src/components/floor-plan/MenuDepth01.jsx @@ -16,6 +16,7 @@ export default function MenuDepth01(props) { setShowAuxiliaryModal, setShowEavesGableEditModal, setShowSlopeSettingModal, + setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, setShowObjectSettingModal, @@ -42,6 +43,7 @@ export default function MenuDepth01(props) { if (type === 'surface') { setShowSlopeSettingModal(id === 0) setShowPlaceShapeDrawingModal(id === 1) + setShowPlacementSurfaceSettingModal(id === 2) setShowObjectSettingModal(id === 3) } } diff --git a/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx b/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx index 79340b73..9ac285c0 100644 --- a/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx +++ b/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx @@ -1,28 +1,45 @@ import Image from 'next/image' +import { useMessage } from '@/hooks/useMessage' export default function PlacementSurface(props) { - const { id, lines, hasDiagonal, info } = props + const { getMessage } = useMessage() + const { id, lines, info, rotate, xInversion, yInversion } = props const num = ['①', '②', '③', '④', '⑤'] + const getImageUrl = () => { + if (xInversion && !yInversion) { + return `/static/images/canvas/shape/re_${(rotate - 2) % 4 !== 0 ? Math.abs((rotate - 2) % 4) * 90 + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` + } + + if (!xInversion && yInversion) { + return `/static/images/canvas/shape/re_${rotate % 4 !== 0 ? Math.abs(rotate % 4) * 90 + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` + } + + if (xInversion && yInversion) { + return `/static/images/canvas/shape/${(rotate + 2) % 4 !== 0 ? Math.abs((rotate + 2) % 4) * 90 + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` + } + + if (rotate < 0) { + return `/static/images/canvas/shape/${rotate !== 0 ? Math.abs((rotate + 4) * 90) + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` + } + + return `/static/images/canvas/shape/${rotate !== 0 ? Math.abs(rotate * 90) + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` + } return ( <>
-

設定

+

{getMessage('setting')}

- react + react
{lines?.map((line, index) => ( -
-
{line.isDiagonal ? '斜めの長さ' : num[index]}
+
+
+ {line.isDiagonal ? getMessage('modal.placement.surface.setting.diagonal.length') : num[index]} +
@@ -38,13 +55,13 @@ export default function PlacementSurface(props) {
-

設定

+

{getMessage('setting')}

- - ドン - - 立つ + {getMessage('commons.north')} + {getMessage('commons.east')} + {getMessage('commons.south')} + {getMessage('commons.west')} diff --git a/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx index 883e1d40..06af2237 100644 --- a/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx +++ b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx @@ -4,12 +4,12 @@ import { useEffect, useState } from 'react' import Image from 'next/image' import PlacementSurface from '@/components/floor-plan/modal/placementSurface/PlacementSurface' -export default function PlacementSurfaceSetting({}) { +export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSettingModal }) { const { getMessage } = useMessage() const [selectedType, setSelectedType] = useState() const [rotate, setRotate] = useState(0) - const [sideInversion, setSideInversion] = useState(false) - const [upsideInversion, setUpsideInversion] = useState(false) + const [xInversion, setXInversion] = useState(false) + const [yInversion, setYInversion] = useState(false) /* type * a: line 2 * b: line 2 + diagonal 1 @@ -28,7 +28,7 @@ export default function PlacementSurfaceSetting({}) { value: 3500, }, ], - info: 'ⓘ ①の長さ入力後に対角線の長さを入力すると、②の長さを自動計算します。', + info: getMessage('modal.placement.surface.setting.info'), }, { id: 2, @@ -181,30 +181,32 @@ export default function PlacementSurfaceSetting({}) { ], }, ] + const placementSurfaceProps = { + ...selectedType, + rotate, + xInversion, + yInversion, + } const getInversionState = () => { - // return `${getScale()} rotate(${90 * rotate}deg)` return `${getScale()} ${getRotate()}` - // return `${getScale()}` } const getScale = () => { - // if (rotate === 1 || rotate === 3) { - // return `scale(${sideInversion ? 1 : -1}, ${upsideInversion ? 1 : -1} )` - // } else { - // return `scale(${sideInversion ? -1 : 1}, ${upsideInversion ? -1 : 1} )` - // } - return `scale(${sideInversion ? -1 : 1}, ${upsideInversion ? -1 : 1})` + return `scale(${yInversion ? -1 : 1}, ${xInversion ? -1 : 1})` } const getRotate = () => { - // return `rotate(${sideInversion && upsideInversion ? 90 * rotate : sideInversion || upsideInversion ? -90 * rotate : 90 * rotate}deg)` - if (sideInversion !== upsideInversion) { - ;`rotate(${90 * rotate - 180}deg)` - } return `rotate(${90 * rotate}deg)` } + const onClick = () => { + if (xInversion !== yInversion) { + } else { + setRotate((rotate + 1) % 4) + } + } + useEffect(() => { setSelectedType(types[0]) }, []) @@ -213,8 +215,10 @@ export default function PlacementSurfaceSetting({}) {
-

屋根形状の設定

- +

{getMessage('plan.menu.placement.surface.arrangement')}

+
@@ -230,7 +234,6 @@ export default function PlacementSurfaceSetting({}) { width: 'auto', height: 'auto', transform: getInversionState(), - transition: 'all .15s ease-in-out', }} />
@@ -238,16 +241,11 @@ export default function PlacementSurfaceSetting({}) { ))}
- - - - x:{upsideInversion ? 1 : 0} -
- y:{sideInversion ? 1 : 0} -
- rotate:{rotate} + + +
- +
diff --git a/src/locales/ja.json b/src/locales/ja.json index 479c52b2..01a85eaa 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -168,6 +168,8 @@ "modal.object.setting.offset.depth": "出幅 (深さ)", "modal.object.setting.offset.width": "出幅 (幅)", "modal.object.setting.direction.select": "方向の選択", + "modal.placement.surface.setting.info": "ⓘ ①の長さ入力後に対角線の長さを入力すると、②の長さを自動計算します。", + "modal.placement.surface.setting.diagonal.length": "斜めの長さ", "setting": "設定", "common.message.no.data": "No data", "common.message.no.dataDown": "ダウンロードするデータがありません", diff --git a/src/locales/ko.json b/src/locales/ko.json index 0599fb74..2ef54c74 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -174,6 +174,8 @@ "modal.object.setting.offset.depth": "출폭(깊이)", "modal.object.setting.offset.width": "출폭(폭)", "modal.object.setting.direction.select": "방향 선택", + "modal.placement.surface.setting.info": "ⓘ ①의 길이 입력 후 대각선 길이를 입력하면 ②의 길이를 자동 계산합니다.", + "modal.placement.surface.setting.diagonal.length": "대각선 길이", "setting": "설정", "common.message.no.data": "No data", "common.message.no.dataDown": "No data to download", From 0978626a03d1a54e9399912da3ec826bc1fdac79 Mon Sep 17 00:00:00 2001 From: minsik Date: Thu, 10 Oct 2024 14:04:40 +0900 Subject: [PATCH 11/27] =?UTF-8?q?-=20=EC=A7=80=EB=B6=95=ED=98=95=EC=83=81?= =?UTF-8?q?=20=EC=88=98=EB=8F=99=EC=84=A4=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/FloorPlan.jsx | 5 +++++ .../modal/roofShape/passivity/Eaves.jsx | 18 ------------------ 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index dc032ab0..4e848143 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -23,6 +23,7 @@ import EavesGableEdit from '@/components/floor-plan/modal/eavesGable/EavesGableE import WallLineOffsetSetting from '@/components/floor-plan/modal/wallLineOffset/WallLineOffsetSetting' import ObjectSetting from '@/components/floor-plan/modal/object/ObjectSetting' import PlacementSurfaceSetting from '@/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting' +import RoofShapePassivitySetting from '@/components/floor-plan/modal/roofShape/RoofShapePassivitySetting' export default function FloorPlan() { const [showCanvasSettingModal, setShowCanvasSettingModal] = useState(false) @@ -132,8 +133,12 @@ export default function FloorPlan() { {showDotLineGridModal && } {showColorPickerModal && } {showPropertiesSettingModal && } + {showPlaceShapeModal && } {showRoofShapeSettingModal && } + {showRoofShapePassivitySettingModal && ( + + )} {showAuxiliaryModal && } {showSlopeSettingModal && } {showPlaceShapeDrawingModal && } diff --git a/src/components/floor-plan/modal/roofShape/passivity/Eaves.jsx b/src/components/floor-plan/modal/roofShape/passivity/Eaves.jsx index 963cfa63..22e15a34 100644 --- a/src/components/floor-plan/modal/roofShape/passivity/Eaves.jsx +++ b/src/components/floor-plan/modal/roofShape/passivity/Eaves.jsx @@ -22,24 +22,6 @@ export default function Eaves() {
mm
-
- - {getMessage('gable.offset')} - -
- -
- mm -
-
- - {getMessage('shed.width')} - -
- -
- mm -
) } From 1c5747fdddc729c0e6f37b8a21ddf3200385686a Mon Sep 17 00:00:00 2001 From: basssy Date: Thu, 10 Oct 2024 14:42:10 +0900 Subject: [PATCH 12/27] =?UTF-8?q?QCast=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=9B=84=20=20=EB=A9=94=EC=9D=B8=ED=99=94=EB=A9=B4=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=EC=A4=91=20(=20pwdInitYn=20:=20'Y')=20=EB=A1=9C=20?= =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=8C=9D=EC=97=85=EC=9D=80=20=EC=9E=84=EC=8B=9C=20=ED=8C=A8?= =?UTF-8?q?=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Main.jsx | 296 +++++++++++++++++- src/components/main/MainContents.jsx | 166 ++++++++++ src/components/main/ProductItem.jsx | 35 +++ src/components/management/Stuff.jsx | 51 ++- .../management/StuffSearchCondition.jsx | 5 +- 5 files changed, 547 insertions(+), 6 deletions(-) create mode 100644 src/components/main/MainContents.jsx create mode 100644 src/components/main/ProductItem.jsx diff --git a/src/components/Main.jsx b/src/components/Main.jsx index 4546f32d..807f3c49 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -1,9 +1,303 @@ 'use client' +import React, { useEffect, useState } from 'react' + +import { useRouter } from 'next/navigation' +import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' +import { modalContent, modalState, modalProps } from '@/store/modalAtom' +import { sessionStore } from '@/store/commonAtom' +import { useAxios } from '@/hooks/useAxios' +import { globalLocaleStore } from '@/store/localeAtom' +import MainContents from './main/MainContents' +import { useMessage } from '@/hooks/useMessage' +import { isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils' +import { stuffSearchState } from '@/store/stuffAtom' export default function MainPage(props) { + const [sessionState, setSessionState] = useRecoilState(sessionStore) + const [open, setOpen] = useRecoilState(modalState) + const setContent = useSetRecoilState(modalContent) + const setModalProps = useSetRecoilState(modalProps) + + const globalLocaleState = useRecoilValue(globalLocaleStore) + + const { get, patch } = useAxios(globalLocaleState) + const router = useRouter() + const { getMessage } = useMessage() + + const [searchTxt, setSearchTxt] = useState('') + + const [searchRadioType, setSearchRadioType] = useState('object') + //컨텐츠 관련 + const [saleStoreId, setSaleStoreId] = useState('') + const [saleStoreName, setSaleStoreName] = useState('') + + const [objectList, setObjectList] = useState([]) + const [businessCharger, setBusinessCharger] = useState('') + const [businessChargerMail, setBusinessChargerMail] = useState('') + const [businessChargerTel, setBusinessChargerTel] = useState('') + + const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) + + //비밀번호 변경 + const updateProcess = async (formData) => { + const pwd1 = formData.get('password1') + const pwd2 = formData.get('password2') + + if (pwd1 !== pwd2) { + alert('입력한 패스워드가 다릅니다') + return false + } + + //패스워드 길이수 체크 + if (checkLength(pwd1) > 10) { + alert('반각10자이내로 입력') + } + + const param = { + loginId: sessionState.userId, + chgType: 'I', + chgPwd: formData.get('password1'), + } + + await patch({ url: '/api/login/v1.0/user/change-password', data: param }).then((res) => { + if (res) { + if (res.result.resultCode === 'S') { + alert('비밀번호가 변경되었습니다.') + setSessionState({ ...sessionState, pwdInitYn: 'Y' }) + setOpen(false) + } else { + alert(res.result.resultMsg) + } + } + }) + } + + //자리수체크 + const checkLength = (pwd1) => { + let str = new String(pwd1) + let _byte = 0 + if (str.length !== 0) { + for (let i = 0; i < str.length; i++) { + let str2 = str.charAt(i) + if (encodeURIComponent(str2).length > 4) { + _byte += 2 + } else { + _byte++ + } + } + } + return _byte + } + + //공백제거 + const checkValue = (e) => { + let spaceChk = /\s/ + if (spaceChk.exec(e.target.value)) { + e.target.value = e.target.value.replace(/\s|/gi, '') + return false + } + } + + useEffect(() => { + if (sessionState.pwdInitYn === 'N') { + setOpen(true) + setContent(html) + setModalProps({ + closeOnOverlayClick: false, + closeOnEsc: false, + showCloseIcon: false, + }) + } else { + fetchObjectList() + } + }, [sessionState]) + + const fetchObjectList = async () => { + try { + // const apiUrl = `/api/main-page/object/X167/list` + const apiUrl = `/api/main-page/object/${sessionState?.storeId}/list` + const res = await get({ url: apiUrl }) + if (res) { + setSaleStoreId(res.saleStoreId) + setSaleStoreName(res.saleStoreName) + setObjectList(res.objectList) + setBusinessCharger(res.businessCharger) + setBusinessChargerMail(res.businessChargerMail) + setBusinessChargerTel(res.businessChargerTel) + } + } catch (error) { + console.error('MAIN API fetching error:', error) + } + } + + // 모달팝업 컨텐츠 + const html = ( + <> +

비밀번호 변경

+

* 초기화된 비밀번호로 로그인한 경우, 비밀번호를 변경해야 사이트 이용이 가능합니다.

+

비밀번호를 변경하지 않을 경우, 로그인 화면으로 이동합니다.

+
+ + + + + + + + + + + + + + + +
+ 신규비밀번호 입력 * + +
+ +
+
+ 신규비밀번호 재입력 * + +
+ +
+
+ + + +
+ + ) + + // 엔터 이벤트 + const handleByOnKeyUp = (e) => { + if (e.key === 'Enter') { + //물건번호 일떄 + if (searchRadioType === 'object') { + setStuffSearch({ + ...stuffSearch, + schObjectNo: searchTxt, + code: 'M', + }) + router.push('/management/stuff') + } else { + alert('작업중') + return + + //FAQ일떄 + //faq리코일에 + //searchValue= e.target.value + //mainFlag:'Y' + // router.push('/community/faq') + } + } + } + + // 라디오 변경 이벤트 + const handleOnChangeRadio = (e) => { + setSearchRadioType(e.target.value) + } + + // 돋보기 클릭 + const handleOnSubmit = () => { + if (searchRadioType === 'object') { + setStuffSearch({ + ...stuffSearch, + schObjectNo: searchTxt, + code: 'M', + }) + + router.push('/management/stuff') + } else { + alert('작업중') + return + //FAQ일떄 + //faq리코일에 + //searchValue= e.target.value + //mainFlag:'Y' + // router.push('/community/faq') + } + } + return ( <> -

Main page

+ {sessionState.pwdInitYn === 'Y' && ( + <> +
+
+
+
+
+ {getMessage('main.storeId')}/ {getMessage('main.storeName')} +
+
+ +
+ {saleStoreId} / {saleStoreName} +
+
+
+
+
+ + +
+
+ + +
+
+
+ { + setSearchTxt(e.target.value) + }} + /> + +
+
+ +
+ + )} ) } diff --git a/src/components/main/MainContents.jsx b/src/components/main/MainContents.jsx new file mode 100644 index 00000000..ee9d1ab4 --- /dev/null +++ b/src/components/main/MainContents.jsx @@ -0,0 +1,166 @@ +import React, { useEffect, useState } from 'react' +import ProductItem from './ProductItem' +import { useMessage } from '@/hooks/useMessage' +import Image from 'next/image' +import dayjs from 'dayjs' +import { useAxios } from '@/hooks/useAxios' +import { useRecoilValue } from 'recoil' +import { useRouter } from 'next/navigation' +import { globalLocaleStore } from '@/store/localeAtom' +import { queryStringFormatter } from '@/util/common-utils' +export default function MainContents({ objectList, businessCharger, businessChargerMail, businessChargerTel }) { + const { getMessage } = useMessage() + const router = useRouter() + const globalLocaleState = useRecoilValue(globalLocaleStore) + const { get } = useAxios(globalLocaleState) + + //공지사항 + const [recentNoticeList, setRecentNoticeList] = useState([]) + + //FAQ + const [recentFaqList, setRecentFaqList] = useState([]) + + useEffect(() => { + fetchNoticeList() + fetchFaqList() + }, []) + + //공지사항 호출 + const fetchNoticeList = async () => { + try { + const param = { + schNoticeTpCd: 'QC', + schNoticeClsCd: 'NOTICE', + startRow: 1, + endRow: 1, + } + // const noticeApiUrl = `api/board/list?schNoticeTpCd=QC&schNoticeClsCd=NOTICE&schTitle=&startRow=1&endRow=1` + const noticeApiUrl = `api/board/list?${queryStringFormatter(param)}` + const res = await get({ url: noticeApiUrl }) + //console.log('공지res::', res) + if (res) { + if (res.data.length > 0) { + setRecentNoticeList(res.data) + } + } + } catch (error) { + console.error('NOTICE fetching error:', error) + } + } + + //FAQ 호출 + const fetchFaqList = async () => { + try { + const param = { + schNoticeTpCd: 'QC', + schNoticeClsCd: 'FAQ', + startRow: 1, + endRow: 3, + } + // const faqApiUrl = `api/board/list?schNoticeTpCd=QC&schNoticeClsCd=FAQ&schTitle=&startRow=1&endRow=1` + const faqApiUrl = `api/board/list?${queryStringFormatter(param)}` + const res = await get({ url: faqApiUrl }) + //console.log('FAQres::', res) + if (res) { + if (res.data.length > 0) { + setRecentFaqList(res.data) + } + } + } catch (error) { + console.error('FAQ fetching error:', error) + } + } + + return ( +
+
+ +
    + {objectList?.length > 0 ? ( + <> + {objectList.map((row) => { + return ( +
  • { + if (row.objectNo.substring(0, 1) === 'R') { + router.push(`/management/stuff/detail?objectNo=${row.objectNo.toString()}`) + } else { + router.push(`/management/stuff/tempdetail?objectNo=${row.objectNo.toString()}`) + } + }} + > +
    + {dayjs(row.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')} + {row.objectNo} + {row.objectName} + {row.saleStoreName} +
    +
  • + ) + })} + + ) : ( + <> +
  • +
    최근 갱신 물건이 없습니다
    +
  • + + )} +
+
+ +
+
{dayjs(recentNoticeList[0]?.regDt).format('YYYY.MM.DD')}
+
{recentNoticeList[0]?.title}
+
{recentNoticeList[0]?.contents}
+
+
+
+
+ +
    + {recentFaqList.map((row, index) => { + return ( +
  • +
    +
    FAQ {row.noticeNo}
    +
    {row.title}
    +
    {dayjs(row.regDt).format('YYYY.MM.DD')}
    +
    +
  • + ) + })} +
+
+ +
+ + +
+
+ +
    +
  • +
    + react +
    +
    {businessCharger}
    +
  • +
  • +
    + react +
    +
    {businessChargerMail}
    +
  • +
+
+
+
+ ) +} diff --git a/src/components/main/ProductItem.jsx b/src/components/main/ProductItem.jsx new file mode 100644 index 00000000..928bc269 --- /dev/null +++ b/src/components/main/ProductItem.jsx @@ -0,0 +1,35 @@ +import React from 'react' +import { useRouter } from 'next/navigation' +export default function ProductItem({ num, name, children }) { + const router = useRouter() + + // 더보기 페이지 이동 + const pageMove = (num) => { + if (num === 1) { + router.push('/management/stuff') + } else if (num === 2) { + router.push('/community/notice') + } else { + router.push('/community/faq') + } + } + return ( +
+
+

+ + {name} +

+ {num !== 4 && num !== 5 && ( + + )} +
+
{children}
+
+ ) +} diff --git a/src/components/management/Stuff.jsx b/src/components/management/Stuff.jsx index 4e899bb8..02f44561 100644 --- a/src/components/management/Stuff.jsx +++ b/src/components/management/Stuff.jsx @@ -278,6 +278,54 @@ export default function Stuff() { // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(params)}` // const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(params)}` const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(params)}` + + await get({ + url: apiUrl, + }).then((res) => { + if (!isEmptyArray(res)) { + setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) + setGridCount(res[0].totCnt) + } + }) + } + fetchData() + } else { + const params = { + schObjectNo: '', + schAddress: '', + schObjectName: '', + schSaleStoreName: '', + schReceiveUser: '', + schDispCompanyName: '', + schDateType: 'U', + schFromDt: dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD'), + schToDt: dayjs(new Date()).format('YYYY-MM-DD'), + startRow: (curPage - 1) * defaultSize + 1, + endRow: curPage * defaultSize, + schSelSaleStoreId: '', + schSortType: 'R', + } + + async function fetchData() { + //api에 넘길값 startRow, endRow + // let startRow + // let endRow + // startRow = (curPage - 1) * size + 1 + // endRow = curPage * size + // console.log('startrow::', startRow) + // console.log('endRow::', endRow) + + // let curPage + // let totalpage + // let totalCount + // let size + // let pageCount + + // console.log('화면진입 세션정보::::::::::', sessionState) + // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(params)}` + // const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(params)}` + const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(params)}` + await get({ url: apiUrl, }).then((res) => { @@ -294,10 +342,10 @@ export default function Stuff() { useEffect(() => { if (stuffSearchParams?.code === 'E') { + //console.log('조회누름::::::::', stuffSearchParams) stuffSearchParams.startRow = (curPage - 1) * defaultSize + 1 stuffSearchParams.endRow = curPage * defaultSize stuffSearchParams.schSortType = defaultSortType - // console.log('조회누름::::::::', stuffSearchParams) async function fetchData() { // console.log('조회누름 세션정보:::::::::::::', sessionState) // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}` @@ -378,6 +426,7 @@ export default function Stuff() { setAppMessageState(JA) } }, [globalLocaleState]) + return ( <> {/* 퍼블시작 */} diff --git a/src/components/management/StuffSearchCondition.jsx b/src/components/management/StuffSearchCondition.jsx index 97de5079..21b84dd8 100644 --- a/src/components/management/StuffSearchCondition.jsx +++ b/src/components/management/StuffSearchCondition.jsx @@ -182,7 +182,7 @@ export default function StuffSearchCondition() { type="text" className="input-light" placeholder="물건번호 입력" - value={stuffSearch?.code === 'E' ? stuffSearch.schObjectNo : objectNo} + value={stuffSearch?.code === 'E' || stuffSearch?.code === 'M' ? stuffSearch.schObjectNo : objectNo} onChange={(e) => { setObjectNo(e.target.value) setStuffSearch({ ...stuffSearch, code: 'S', schObjectNo: e.target.value }) @@ -255,9 +255,6 @@ export default function StuffSearchCondition() { 판매대리점 선택 - {/*
- -
*/} {schSelSaleStoreList?.length > 0 && ( + +
+
+
+
+
+ +
+
+
+
+
+
+
+ + +
+
+
+
+
+ +
+ mm +
+
+
+
+
+ + ) +} diff --git a/src/components/floor-plan/modal/movement/type/Updown.jsx b/src/components/floor-plan/modal/movement/type/Updown.jsx new file mode 100644 index 00000000..2650ca4a --- /dev/null +++ b/src/components/floor-plan/modal/movement/type/Updown.jsx @@ -0,0 +1,46 @@ +import { useMessage } from '@/hooks/useMessage' + +export default function Updown({}) { + const { getMessage } = useMessage() + + return ( + <> +
+
{getMessage('modal.movement.flow.line.updown.info')}
+
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
+
+
+
+ + +
+
+
+
+
+ +
+ mm +
+
+
+
+
+ + ) +} diff --git a/src/locales/ja.json b/src/locales/ja.json index 01a85eaa..fb925f64 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -40,9 +40,20 @@ "plan.menu.roof.cover.outline.drawing": "外壁線を描", "plan.menu.roof.cover.roof.shape.setting": "屋根形状設定", "plan.menu.roof.cover.roof.shape.passivity.setting": "屋根形状設定", - "plan.menu.roof.cover.roof.shape.edit": "지붕형상 편집", + "plan.menu.roof.cover.eaves.kerava.edit": "처마·케라바 변경", + "plan.menu.roof.cover.movement.shape.updown": "동선이동·형올림내림(JA)", + "modal.movement.flow.line.move": "銅線の移動軒", + "modal.movement.flow.line.updown": "型上げ・降り", + "modal.movement.flow.line.updown.info": "を選択して幅を指定してください桁の異なる辺。", + "modal.movement.flow.line.updown.up": "桁を上げる", + "modal.movement.flow.line.updown.down": "桁数を下げる", + "modal.movement.flow.line.info": "家屋などの壁に面する屋根を作成します。", + "modal.movement.flow.line.bottom.left": "高さ変更:下、左", + "modal.movement.flow.line.top.right": "高さ変更:上、右", + "plan.menu.roof.cover.outline.edit.offset": "외벽선 편집 및 오프셋(JA)", + "plan.menu.roof.cover.roof.surface.alloc": "지붕면 할당(JA)", + "plan.menu.roof.cover.roof.shape.edit": "지붕형상 편집(JA)", "plan.menu.roof.cover.auxiliary.line.drawing": "補助線を描", - "plan.menu.roof.cover.roof.surface.alloc": "지붕면 할당", "modal.cover.outline.drawing": "外壁線を描", "modal.cover.outline": "外壁線", "modal.cover.outline.right.angle": "直角", diff --git a/src/locales/ko.json b/src/locales/ko.json index 2ef54c74..cf63e56c 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -42,6 +42,14 @@ "plan.menu.roof.cover.roof.shape.passivity.setting": "지붕형상 수동 설정", "plan.menu.roof.cover.eaves.kerava.edit": "처마·케라바 변경", "plan.menu.roof.cover.movement.shape.updown": "동선이동·형올림내림", + "modal.movement.flow.line.move": "동선 이동", + "modal.movement.flow.line.updown": "형 올림·내림", + "modal.movement.flow.line.updown.info": "자릿수가 다른 변을 선택하고 폭을 지정하십시오.", + "modal.movement.flow.line.updown.up": "자릿수를 올리다", + "modal.movement.flow.line.updown.down": "자릿수를 낮추다", + "modal.movement.flow.line.info": "동선을 선택하고 이동 폭을 지정하십시오", + "modal.movement.flow.line.bottom.left": "높이 변경: 아래, 왼쪽", + "modal.movement.flow.line.top.right": "높이 변경: 위, 오른쪽", "plan.menu.roof.cover.outline.edit.offset": "외벽선 편집 및 오프셋", "plan.menu.roof.cover.roof.surface.alloc": "지붕면 할당", "plan.menu.roof.cover.roof.shape.edit": "지붕형상 편집", From b379ec670dcf82aa02377f18a797e738188b5ff8 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 11 Oct 2024 12:35:48 +0900 Subject: [PATCH 16/27] =?UTF-8?q?1.=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=9B=84?= =?UTF-8?q?=20=EB=A9=94=EC=9D=B8=ED=99=94=EB=A9=B4=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?2.layout.js=20QModal=20=EB=AF=B8=EC=82=AC=EC=9A=A9=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC=203.=20?= =?UTF-8?q?=ED=8D=BC=EB=B8=94=2010/11=2011=EC=8B=9C26=EB=B6=84=20=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/static/images/main/login_email.svg | 10 + public/static/images/sub/address_search.svg | 11 + public/static/images/sub/information_help.svg | 4 + src/app/layout.js | 2 +- src/components/Main.jsx | 156 +- src/components/main/ChangePasswordPop.jsx | 168 ++ src/locales/ja.json | 13 +- src/locales/ko.json | 13 +- src/styles/_canvasside.scss | 196 +- src/styles/_contents.scss | 1717 +++++++++-------- src/styles/_main.scss | 1160 ++++++----- src/styles/_modal.scss | 498 ++--- src/styles/_reset.scss | 1465 ++++++++------ src/styles/_submodal.scss | 198 ++ src/styles/_table.scss | 466 +++-- src/styles/contents.scss | 3 +- 16 files changed, 3366 insertions(+), 2714 deletions(-) create mode 100644 public/static/images/main/login_email.svg create mode 100644 public/static/images/sub/address_search.svg create mode 100644 public/static/images/sub/information_help.svg create mode 100644 src/components/main/ChangePasswordPop.jsx create mode 100644 src/styles/_submodal.scss diff --git a/public/static/images/main/login_email.svg b/public/static/images/main/login_email.svg new file mode 100644 index 00000000..1ea1a274 --- /dev/null +++ b/public/static/images/main/login_email.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/static/images/sub/address_search.svg b/public/static/images/sub/address_search.svg new file mode 100644 index 00000000..4c0e2d1e --- /dev/null +++ b/public/static/images/sub/address_search.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/static/images/sub/information_help.svg b/public/static/images/sub/information_help.svg new file mode 100644 index 00000000..9eb16941 --- /dev/null +++ b/public/static/images/sub/information_help.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/app/layout.js b/src/app/layout.js index 6c04bbec..f7aafcd0 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -75,7 +75,7 @@ export default async function RootLayout({ children }) { {children} )} - + {/* */} diff --git a/src/components/Main.jsx b/src/components/Main.jsx index 807f3c49..be72673f 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -9,18 +9,16 @@ import { useAxios } from '@/hooks/useAxios' import { globalLocaleStore } from '@/store/localeAtom' import MainContents from './main/MainContents' import { useMessage } from '@/hooks/useMessage' -import { isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils' import { stuffSearchState } from '@/store/stuffAtom' - -export default function MainPage(props) { +import { useForm } from 'react-hook-form' +import '@/styles/contents.scss' +import ChangePasswordPop from './main/ChangePasswordPop' +export default function MainPage() { const [sessionState, setSessionState] = useRecoilState(sessionStore) - const [open, setOpen] = useRecoilState(modalState) - const setContent = useSetRecoilState(modalContent) - const setModalProps = useSetRecoilState(modalProps) const globalLocaleState = useRecoilValue(globalLocaleStore) - const { get, patch } = useAxios(globalLocaleState) + const { get } = useAxios(globalLocaleState) const router = useRouter() const { getMessage } = useMessage() @@ -38,76 +36,8 @@ export default function MainPage(props) { const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) - //비밀번호 변경 - const updateProcess = async (formData) => { - const pwd1 = formData.get('password1') - const pwd2 = formData.get('password2') - - if (pwd1 !== pwd2) { - alert('입력한 패스워드가 다릅니다') - return false - } - - //패스워드 길이수 체크 - if (checkLength(pwd1) > 10) { - alert('반각10자이내로 입력') - } - - const param = { - loginId: sessionState.userId, - chgType: 'I', - chgPwd: formData.get('password1'), - } - - await patch({ url: '/api/login/v1.0/user/change-password', data: param }).then((res) => { - if (res) { - if (res.result.resultCode === 'S') { - alert('비밀번호가 변경되었습니다.') - setSessionState({ ...sessionState, pwdInitYn: 'Y' }) - setOpen(false) - } else { - alert(res.result.resultMsg) - } - } - }) - } - - //자리수체크 - const checkLength = (pwd1) => { - let str = new String(pwd1) - let _byte = 0 - if (str.length !== 0) { - for (let i = 0; i < str.length; i++) { - let str2 = str.charAt(i) - if (encodeURIComponent(str2).length > 4) { - _byte += 2 - } else { - _byte++ - } - } - } - return _byte - } - - //공백제거 - const checkValue = (e) => { - let spaceChk = /\s/ - if (spaceChk.exec(e.target.value)) { - e.target.value = e.target.value.replace(/\s|/gi, '') - return false - } - } - useEffect(() => { - if (sessionState.pwdInitYn === 'N') { - setOpen(true) - setContent(html) - setModalProps({ - closeOnOverlayClick: false, - closeOnEsc: false, - showCloseIcon: false, - }) - } else { + if (sessionState.pwdInitYn === 'Y') { fetchObjectList() } }, [sessionState]) @@ -130,74 +60,6 @@ export default function MainPage(props) { } } - // 모달팝업 컨텐츠 - const html = ( - <> -

비밀번호 변경

-

* 초기화된 비밀번호로 로그인한 경우, 비밀번호를 변경해야 사이트 이용이 가능합니다.

-

비밀번호를 변경하지 않을 경우, 로그인 화면으로 이동합니다.

-
- - - - - - - - - - - - - - - -
- 신규비밀번호 입력 * - -
- -
-
- 신규비밀번호 재입력 * - -
- -
-
- - - -
- - ) - // 엔터 이벤트 const handleByOnKeyUp = (e) => { if (e.key === 'Enter') { @@ -250,7 +112,7 @@ export default function MainPage(props) { return ( <> - {sessionState.pwdInitYn === 'Y' && ( + {(sessionState.pwdInitYn === 'Y' && ( <>
@@ -297,6 +159,10 @@ export default function MainPage(props) { />
+ )) || ( + <> + + )} ) diff --git a/src/components/main/ChangePasswordPop.jsx b/src/components/main/ChangePasswordPop.jsx new file mode 100644 index 00000000..45685c26 --- /dev/null +++ b/src/components/main/ChangePasswordPop.jsx @@ -0,0 +1,168 @@ +import React from 'react' +import { useMessage } from '@/hooks/useMessage' +import { useForm } from 'react-hook-form' +import { sessionStore } from '@/store/commonAtom' +import { useRecoilValue, useRecoilState } from 'recoil' +import { useAxios } from '@/hooks/useAxios' +import { globalLocaleStore } from '@/store/localeAtom' + +export default function ChangePasswordPop() { + const globalLocaleState = useRecoilValue(globalLocaleStore) + + const { patch } = useAxios(globalLocaleState) + const { getMessage } = useMessage() + const [sessionState, setSessionState] = useRecoilState(sessionStore) + + const formInitValue = { + password1: '', + password2: '', + } + const { register, setValue, getValues, handleSubmit, resetField, control, watch } = useForm({ + defaultValues: formInitValue, + }) + + const form = { register, setValue, getValues, handleSubmit, resetField, control, watch } + + //자리수체크 + const checkLength = (pwd1) => { + let str = new String(pwd1) + let _byte = 0 + if (str.length !== 0) { + for (let i = 0; i < str.length; i++) { + let str2 = str.charAt(i) + if (encodeURIComponent(str2).length > 4) { + _byte += 2 + } else { + _byte++ + } + } + } + return _byte + } + + //공백제거 + const checkValue = (e) => { + let spaceChk = /\s/ + if (spaceChk.exec(e.target.value)) { + e.target.value = e.target.value.replace(/\s|/gi, '') + return false + } + } + + //비밀번호 변경 + const updateProcess = async () => { + const _password1 = form.watch('password1') + const _password2 = form.watch('password2') + + if (_password1 !== _password2) { + alert(getMessage('main.popup.login.validate1')) + return false + } + + //패스워드 길이수 체크 + if (checkLength(_password1) > 10) { + alert(getMessage('main.popup.login.validate2')) + } + + const param = { + loginId: sessionState.userId, + chgType: 'I', + chgPwd: _password1, + } + await patch({ url: '/api/login/v1.0/user/change-password', data: param }).then((res) => { + if (res) { + if (res.result.resultCode === 'S') { + alert(getMessage('main.popup.login.success')) + setSessionState({ ...sessionState, pwdInitYn: 'Y' }) + } else { + alert(res.result.resultMsg) + } + } + }) + } + + return ( +
+
+
+
+

{getMessage('main.popup.login.popupTitle')}

+
+
+
+
+
+
+
+
+
+ {getMessage('main.popup.login.newPassword1')} + * +
+
{getMessage('main.popup.login.placeholder')}
+
+
+
+
+ +
+
+
+
+
+
+
+ {getMessage('main.popup.login.newPassword2')} + * +
+
{getMessage('main.popup.login.placeholder')}
+
+
+
+
+ +
+
+
+
+
+
+ {getMessage('main.popup.login.guide1')} + {getMessage('main.popup.login.guide2')} +
+
+
+ + +
+
+
+
+
+ ) +} diff --git a/src/locales/ja.json b/src/locales/ja.json index 2a07e89b..a1172800 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -372,5 +372,16 @@ "main.content.objectList": "最近の更新物件一覧", "main.content.notice": "お知らせ", "main.content.download1": "操作マニュアル", - "main.content.download2": "屋根の説明書" + "main.content.download2": "屋根の説明書", + "main.popup.login.popupTitle": "パスワード変更", + "main.popup.login.newPassword1": "新しいパスワードを入力", + "main.popup.login.newPassword2": "新規パスワード再入力", + "main.popup.login.placeholder": "半角10文字以内 ", + "main.popup.login.guide1": "初期化されたパスワードでログインした場合、パスワードを変更しなければサイト利用が可能です。", + "main.popup.login.guide2": "パスワードを変更しない場合は、ログイン画面に進みます。", + "main.popup.login.btn1": "変更", + "main.popup.login.btn2": "変更しない", + "main.popup.login.validate1": "入力したパスワードが異なります。", + "main.popup.login.validate2": "半角10文字以内で入力してください。", + "main.popup.login.success": "パスワードが変更されました。" } diff --git a/src/locales/ko.json b/src/locales/ko.json index 742dd27a..f1f596f7 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -375,5 +375,16 @@ "main.content.objectList": "최근 갱신 물건목록", "main.content.notice": "공지사항", "main.content.download1": "조작메뉴얼", - "main.content.download2": "지붕설명서" + "main.content.download2": "지붕설명서", + "main.popup.login.popupTitle": "비밀번호변경", + "main.popup.login.newPassword1": "새 비밀번호 입력", + "main.popup.login.newPassword2": "새 비밀번호 재입력", + "main.popup.login.placeholder": "반각 10자 이내", + "main.popup.login.guide1": "초기화된 비밀번호로 로그인한 경우 비밀번호를 변경하지 않으면 사이트 이용이 가능합니다.", + "main.popup.login.guide2": "비밀번호를 변경하지 않으려면 로그인 화면으로 이동합니다.", + "main.popup.login.btn1": "변경", + "main.popup.login.btn2": "변경안함", + "main.popup.login.validate1": "입력한 패스워드가 다릅니다.", + "main.popup.login.validate2": "반각 10자 이내로 입력해주세요.", + "main.popup.login.success": "비밀번호가 변경되었습니다." } diff --git a/src/styles/_canvasside.scss b/src/styles/_canvasside.scss index 66bba83d..8ef0c762 100644 --- a/src/styles/_canvasside.scss +++ b/src/styles/_canvasside.scss @@ -1,106 +1,106 @@ // 패널 배치 집계 -.penal-wrap{ - position: fixed; - top: 200px; - left: 50px; - z-index: 999999; - width: 237px; - height: 40px; - line-height: 40px; - background-color: #fff; - border: 1px solid #DFDFDF; - padding: 0 34px 0 10px; - border-radius: 2px; - box-shadow: 0px 7px 14px 0px rgba(0, 0, 0, 0.05); - cursor: pointer; - &::before{ - content: ''; - position: absolute; - top: 50%; - right: 12px; - transform: translateY(-50%); - width: 10px; - height: 6px; - background: url(../../public/static/images/canvas/penal_arr.svg)no-repeat center; - background-size: cover; - } - h2{ - font-size: 12px; - font-weight: 500; - color: #3D3D3D; - } - .penal-table-wrap{ - display: none; - position: absolute; - top: 100%; - left: -1px; - min-width: calc(100% + 2px); - background-color: #3D3D3D; - border: 1px solid #3D3D3D; - padding: 20px; - .penal-table{ - table-layout: fixed; - border-collapse: collapse; - thead{ - th{ - text-align: center; - background-color:rgba(255, 255, 255, 0.05); - font-size: 12px; - font-weight: 500; - color: #fff; - border: 1px solid #505050; - } - } - tbody{ - td{ - font-size: 12px; - color: #fff; - font-weight: 400; - text-align: center; - padding: 0 10px; - border: 1px solid #505050; - } - } +.penal-wrap { + position: fixed; + top: 200px; + left: 50px; + z-index: 999999; + width: 237px; + height: 40px; + line-height: 40px; + background-color: #fff; + border: 1px solid #dfdfdf; + padding: 0 34px 0 10px; + border-radius: 2px; + box-shadow: 0px 7px 14px 0px rgba(0, 0, 0, 0.05); + cursor: pointer; + &::before { + content: ''; + position: absolute; + top: 50%; + right: 12px; + transform: translateY(-50%); + width: 10px; + height: 6px; + background: url(../../public/static/images/canvas/penal_arr.svg) no-repeat center; + background-size: cover; + } + h2 { + font-size: 12px; + font-weight: 500; + color: #3d3d3d; + } + .penal-table-wrap { + display: none; + position: absolute; + top: 100%; + left: -1px; + min-width: calc(100% + 2px); + background-color: #3d3d3d; + border: 1px solid #3d3d3d; + padding: 20px; + .penal-table { + table-layout: fixed; + border-collapse: collapse; + thead { + th { + text-align: center; + background-color: rgba(255, 255, 255, 0.05); + font-size: 12px; + font-weight: 500; + color: #fff; + border: 1px solid #505050; } + } + tbody { + td { + font-size: 12px; + color: #fff; + font-weight: 400; + text-align: center; + padding: 0 10px; + border: 1px solid #505050; + } + } } - &.act{ - border: 1px solid #3D3D3D; - background-color: #3D3D3D; - h2{ - color: #fff; - } - &::before{ - background: url(../../public/static/images/canvas/penal_arr_white.svg)no-repeat center; - } - .penal-table-wrap{ - display: block; - } + } + &.act { + border: 1px solid #3d3d3d; + background-color: #3d3d3d; + h2 { + color: #fff; } + &::before { + background: url(../../public/static/images/canvas/penal_arr_white.svg) no-repeat center; + } + .penal-table-wrap { + display: block; + } + } } // context menu -.context-menu-wrap{ - min-width: 238px; - border-radius: 4px; - border: 1px solid #E9E9E9; - background: #FFF; - box-shadow: 0px 6px 14px 0px rgba(0, 0, 0, 0.05); - ul{ - padding: 17px 0; - border-bottom: 1px solid #E9E9E9; - &:last-child{ - border: none; - } - li{ - padding: 4px 30px; - cursor: pointer; - font-size: 12px; - font-weight: 400; - color: #101010; - &:hover{ - color: #fff; - background-color: #0D99FF; - } - } +.context-menu-wrap { + min-width: 238px; + border-radius: 4px; + border: 1px solid #e9e9e9; + background: #fff; + box-shadow: 0px 6px 14px 0px rgba(0, 0, 0, 0.05); + ul { + padding: 17px 0; + border-bottom: 1px solid #e9e9e9; + &:last-child { + border: none; } -} \ No newline at end of file + li { + padding: 4px 30px; + cursor: pointer; + font-size: 12px; + font-weight: 400; + color: #101010; + &:hover { + color: #fff; + background-color: #0d99ff; + } + } + } +} diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss index 7e087a87..275a917f 100644 --- a/src/styles/_contents.scss +++ b/src/styles/_contents.scss @@ -1,852 +1,953 @@ // CanvasPage -.canvas-wrap{ - height: calc(100vh - 47px); - display: flex; - flex-direction: column; - .canvas-content{ - flex: 1 1 auto; - .canvas-layout{ - height: 100%; - } +.canvas-wrap { + height: calc(100vh - 47px); + display: flex; + flex-direction: column; + .canvas-content { + flex: 1 1 auto; + .canvas-layout { + height: 100%; } - &.sub-wrap{ - overflow: hidden; - .canvas-content{ - height: calc(100% - 47px); - } + } + &.sub-wrap { + overflow: hidden; + .canvas-content { + height: calc(100% - 47px); } + } } // CanvasMenu -.canvas-menu-wrap{ +.canvas-menu-wrap { + position: relative; + display: block; + width: 100%; + padding-bottom: 0; + background-color: #383838; + transition: padding 0.17s ease-in-out; + .canvas-menu-inner { position: relative; - display: block; - width: 100%; - padding-bottom: 0; - background-color: #383838; - transition: padding .17s ease-in-out; - .canvas-menu-inner{ - position: relative; - display: flex; - align-items: center; - padding: 0 40px 0 20px; - background-color: #2C2C2C; - z-index: 999; - .canvas-menu-list{ - display: flex; - align-items: center; - height: 100%; - .canvas-menu-item{ - display: flex; - align-items: center; - height: 100%; - button{ - display: flex; - align-items: center; - font-size: 12px; - height: 100%; - color: #fff; - font-weight: 600; - padding: 15px 20px; - opacity: 0.55; - transition: all .17s ease-in-out; - .menu-icon{ - display: block; - width: 16px; - height: 16px; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - margin-right: 10px; - &.con00{background-image: url(/static/images/canvas/menu_icon00.svg);} - &.con01{background-image: url(/static/images/canvas/menu_icon01.svg);} - &.con02{background-image: url(/static/images/canvas/menu_icon02.svg);} - &.con03{background-image: url(/static/images/canvas/menu_icon03.svg);} - &.con04{background-image: url(/static/images/canvas/menu_icon04.svg);} - &.con05{background-image: url(/static/images/canvas/menu_icon05.svg);} - &.con06{background-image: url(/static/images/canvas/menu_icon06.svg);} - } - } - &.active{ - background-color: #383838; - button{ - opacity: 1; - } - } - } - } - .canvas-side-btn-wrap{ - display: flex; - align-items: center; - margin-left: auto; - .select-box{ - width: 124px; - margin-right: 5px; - > div{ - width: 100%; - } - } - .btn-from{ - display: flex; - align-items: center; - gap: 5px; - button{ - display: block; - width: 30px; - height: 30px; - border-radius: 2px; - background-color: #3D3D3D; - background-position: center; - background-repeat: no-repeat; - background-size: 15px 15px; - transition: all .17s ease-in-out; - &.btn01{background-image: url(../../public/static/images/canvas/side_icon03.svg);} - &.btn02{background-image: url(../../public/static/images/canvas/side_icon02.svg);} - &.btn03{background-image: url(../../public/static/images/canvas/side_icon01.svg);} - &.btn04{background-image: url(../../public/static/images/canvas/side_icon04.svg);} - &.btn05{background-image: url(../../public/static/images/canvas/side_icon05.svg);} - &.btn06{background-image: url(../../public/static/images/canvas/side_icon06.svg);} - &.btn07{background-image: url(../../public/static/images/canvas/side_icon07.svg);} - &.btn08{background-image: url(../../public/static/images/canvas/side_icon08.svg);} - &.btn09{background-image: url(../../public/static/images/canvas/side_icon09.svg);} - &:hover{ - background-color: #1083E3; - } - &.active{ - background-color: #1083E3; - } - } - } - .ico-btn-from{ - display: flex; - align-items: center; - gap: 5px; - button{ - .ico{ - display: block; - width: 15px; - height: 15px; - background-repeat: no-repeat; - background-position: center; - background-size: contain; - &.ico01{background-image: url(../../public/static/images/canvas/ico-flx01.svg);} - &.ico02{background-image: url(../../public/static/images/canvas/ico-flx02.svg);} - &.ico03{background-image: url(../../public/static/images/canvas/ico-flx03.svg);} - &.ico04{background-image: url(../../public/static/images/canvas/ico-flx04.svg);} - } - .name{ - font-size: 12px; - color: #fff; - } - } - &.form06{ - .name{ - font-size: 13px; - } - } - } - .vertical-horizontal{ - display: flex; - min-width: 170px; - height: 28px; - margin: 0 5px; - border-radius: 2px; - background: #373737; - line-height: 28px; - overflow: hidden; - span{ - padding: 0 10px; - font-size: 13px; - color: #fff; - } - button{ - margin-left: auto; - height: 100%; - background-color: #4B4B4B; - font-size: 13px; - font-weight: 400; - color: #fff; - padding: 0 7.5px; - transition: all .17s ease-in-out; - } - &.on{ - button{ - background-color: #1083E3; - } - } - } - .size-control{ - display: flex; - align-items: center; - justify-content: center; - gap: 10px; - background-color: #3D3D3D; - border-radius: 2px; - width: 100px; - height: 30px; - margin: 0 5px; - span{ - font-size: 13px; - color: #fff; - } - .control-btn{ - display: block; - width: 12px; - height: 12px; - background-repeat: no-repeat; - background-size: cover; - background-position: center; - &.minus{ - background-image: url(../../public/static/images/canvas/minus.svg); - } - &.plus{ - background-image: url(../../public/static/images/canvas/plus.svg); - } - } - } - } - } - .canvas-depth2-wrap{ - position: absolute; - top: -100%; - left: 0; - background-color: #383838; - width: 100%; - height: 50px; - transition: all .17s ease-in-out; - .canvas-depth2-inner{ - display: flex; - align-items: center; - padding: 0 40px; - height: 100%; - .canvas-depth2-list{ - display: flex; - align-items: center ; - height: 100%; - .canvas-depth2-item{ - display: flex; - align-items: center; - margin-right: 26px; - height: 100%; - button{ - position: relative; - opacity: 0.55; - color: #fff; - font-size: 12px; - font-weight: normal; - height: 100%; - padding-right: 12px; - } - &.active{ - button{ - opacity: 1; - font-weight: 600; - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; - } - } - } - } - } - .canvas-depth2-btn-list{ - display: flex; - align-items: center; - margin-left: auto; - height: 100%; - .depth2-btn-box{ - display: flex; - align-items: center; - margin-right: 34px; - height: 100%; - transition: all .17s ease-in-out; - button{ - position: relative; - font-size: 12px; - font-weight: 400; - height: 100%; - color: #fff; - padding-right: 12px; - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; - } - } - &:last-child{ - margin-right: 0; - } - &.mouse{ - opacity: 0.55; - } - } - } - } - &.active{ - top: 47px; - } - } - &.active{ - padding-bottom: 50px; - } -} - -// canvas-layout -.canvas-layout{ - .canvas-page-list{ - display: flex; - background-color: #1C1C1C; - border-top: 1px solid #000; - width: 100%; - .canvas-plane-wrap{ - display: flex; - align-items: center; - max-width: calc(100% - 45px); - .canvas-page-box{ - display: flex; - align-items: center; - background-color: #1c1c1c; - padding: 9.6px 20px; - border-right:1px solid #000; - min-width: 0; - transition: all .17s ease-in-out; - span{ - display: flex; - align-items: center; - width: 100%; - font-size: 12px; - font-family: 'Pretendard', sans-serif; - color: #AAA; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .close{ - flex: none; - display: block; - width: 7px; - height: 8px; - margin-left: 15px; - background: url(../../public/static/images/canvas/plan_close_gray.svg)no-repeat center; - background-size: cover; - } - &.on{ - background-color: #fff; - span{ - font-weight: 600; - color: #101010; - } - .close{ - background: url(../../public/static/images/canvas/plan_close_black.svg)no-repeat center; - } - &:hover{ - background-color: #fff; - } - } - &:hover{ - background-color: #000; - } - } - } - .plane-add{ - display: flex; - align-items: center; - justify-content: center; - width: 45px; - padding: 13.5px 0; - background-color: #1C1C1C; - border-right: 1px solid #000; - transition: all .17s ease-in-out; - span{ - display: block; - width: 9px; - height: 9px; - background: url(../../public/static/images/canvas/plane_add.svg)no-repeat center; - background-size: cover; - } - &:hover{ - background-color: #000; - } - } - } -} - -.canvas-frame{ - position: relative; - height: calc(100% - 36.5px); - background-color: #fff; - canvas{ - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } -} - -// sub-page -.sub-header{ - position: fixed; - top: 46px; - left: 0; - width: 100%; - height: 46px; - border-bottom: 1px solid #000; - background: #2C2C2C; + display: flex; + align-items: center; + padding: 0 40px 0 20px; + background-color: #2c2c2c; z-index: 999; - .sub-header-inner{ + .canvas-menu-list { + display: flex; + align-items: center; + height: 100%; + .canvas-menu-item { display: flex; align-items: center; height: 100%; - padding: 0 100px; - .sub-header-title-wrap{ - display: flex; - align-items: center; - .title-item{ - position: relative; - padding: 0 24px; - a{ - display: flex; - align-items: center; - .icon{ - width: 22px; - height: 22px; - margin-right: 8px; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - &.drawing{background-image: url(../../public/static/images/main/drawing_icon.svg);} - } - } - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 16px; - background-color: #D9D9D9; - } - &:first-child{ - padding-left: 0; - } - &:last-child{ - padding-right: 0; - &:after{ - display: none; - } - } + button { + display: flex; + align-items: center; + font-size: 12px; + height: 100%; + color: #fff; + font-weight: 600; + padding: 15px 20px; + opacity: 0.55; + transition: all 0.17s ease-in-out; + .menu-icon { + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + margin-right: 10px; + &.con00 { + background-image: url(/static/images/canvas/menu_icon00.svg); } + &.con01 { + background-image: url(/static/images/canvas/menu_icon01.svg); + } + &.con02 { + background-image: url(/static/images/canvas/menu_icon02.svg); + } + &.con03 { + background-image: url(/static/images/canvas/menu_icon03.svg); + } + &.con04 { + background-image: url(/static/images/canvas/menu_icon04.svg); + } + &.con05 { + background-image: url(/static/images/canvas/menu_icon05.svg); + } + &.con06 { + background-image: url(/static/images/canvas/menu_icon06.svg); + } + } } - .sub-header-title{ - font-size: 16px; + &.active { + background-color: #383838; + button { + opacity: 1; + } + } + } + } + .canvas-side-btn-wrap { + display: flex; + align-items: center; + margin-left: auto; + .select-box { + width: 124px; + margin-right: 5px; + > div { + width: 100%; + } + } + .btn-from { + display: flex; + align-items: center; + gap: 5px; + button { + display: block; + width: 30px; + height: 30px; + border-radius: 2px; + background-color: #3d3d3d; + background-position: center; + background-repeat: no-repeat; + background-size: 15px 15px; + transition: all 0.17s ease-in-out; + &.btn01 { + background-image: url(../../public/static/images/canvas/side_icon03.svg); + } + &.btn02 { + background-image: url(../../public/static/images/canvas/side_icon02.svg); + } + &.btn03 { + background-image: url(../../public/static/images/canvas/side_icon01.svg); + } + &.btn04 { + background-image: url(../../public/static/images/canvas/side_icon04.svg); + } + &.btn05 { + background-image: url(../../public/static/images/canvas/side_icon05.svg); + } + &.btn06 { + background-image: url(../../public/static/images/canvas/side_icon06.svg); + } + &.btn07 { + background-image: url(../../public/static/images/canvas/side_icon07.svg); + } + &.btn08 { + background-image: url(../../public/static/images/canvas/side_icon08.svg); + } + &.btn09 { + background-image: url(../../public/static/images/canvas/side_icon09.svg); + } + &:hover { + background-color: #1083e3; + } + &.active { + background-color: #1083e3; + } + } + } + .ico-btn-from { + display: flex; + align-items: center; + gap: 5px; + button { + .ico { + display: block; + width: 15px; + height: 15px; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + &.ico01 { + background-image: url(../../public/static/images/canvas/ico-flx01.svg); + } + &.ico02 { + background-image: url(../../public/static/images/canvas/ico-flx02.svg); + } + &.ico03 { + background-image: url(../../public/static/images/canvas/ico-flx03.svg); + } + &.ico04 { + background-image: url(../../public/static/images/canvas/ico-flx04.svg); + } + } + .name { + font-size: 12px; color: #fff; - font-weight: 600; + } } - .sub-header-location{ - margin-left: auto; - display: flex; - align-items: center; - .location-item{ - position: relative; - display: flex; - align-items: center; - padding: 0 10px; - span{ - display: flex; - font-size: 12px; - color: #AAA; - font-weight: normal; - cursor: default; - } - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 4px; - height: 6px; - background: url(../../public/static/images/main/loaction_arr.svg)no-repeat center; - } - &:first-child{ - padding-left: 0; - } - &:last-child{ - padding-right: 0; - span{ - color: #fff; - } - &:after{ - display: none; - } - } - } + &.form06 { + .name { + font-size: 13px; + } } - } -} - -// sub content -.sub-content{ - padding-top: 46px; - .sub-content-inner{ - max-width: 1720px; - margin: 0 auto; - padding-top: 20px; - .sub-content-box{ - margin-bottom: 20px; - &:last-child{ - margin-bottom: 0; - } - } - } - &.estimate{ + } + .vertical-horizontal { display: flex; - flex-direction: column; - height: calc(100% - 36.5px); - overflow-y: auto; - padding-top: 0; - .sub-content-inner{ - flex: 1; - width: 100%; + min-width: 170px; + height: 28px; + margin: 0 5px; + border-radius: 2px; + background: #373737; + line-height: 28px; + overflow: hidden; + span { + padding: 0 10px; + font-size: 13px; + color: #fff; } - } -} -.sub-table-box{ - padding: 20px; - border-radius: 6px; - border: 1px solid #E9EAED; - background: #FFF; - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - .table-box-title-wrap{ - display: flex; - align-items: center; - margin-bottom: 15px; - .title-wrap{ - display: flex; - align-items: center; - h3{ - display: block; - font-size: 15px; - color: #101010; - font-weight: 600; - margin-right: 14px; - } - .option{ - padding-left: 5px; - font-size: 13px; - color: #101010; - font-weight: 400; - } - .info-wrap{ - display: flex; - align-items: center; - li{ - position: relative; - padding: 0 6px; - font-size: 12px; - color: #101010; - font-weight: normal; - span{ - font-weight: 600; - &.red{ - color: #E23D70; - } - } - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 11px; - background-color: #D9D9D9; - } - &:first-child{padding-left: 0;} - &:last-child{padding-right: 0;&::after{display: none;}} - } - } + button { + margin-left: auto; + height: 100%; + background-color: #4b4b4b; + font-size: 13px; + font-weight: 400; + color: #fff; + padding: 0 7.5px; + transition: all 0.17s ease-in-out; } - } - .left-unit-box{ - margin-left: auto; - display: flex; - align-items: center; - } - .promise-gudie{ - display: block; - font-size: 13px; - font-weight: 700; - color: #101010; - margin-bottom: 20px; - } - .important{ - color: #f00; - } - .sub-table-footer{ + &.on { + button { + background-color: #1083e3; + } + } + } + .size-control { display: flex; align-items: center; justify-content: center; - margin-top: 20px; - } - .pagination-wrap{ - margin-top: 24px; - } -} - -.infomation-box-wrap{ - display: flex; - align-items: center; - gap: 10px; - .sub-table-box{ - flex: 1 ; - } - .info-title{ - font-size: 14px; - font-weight: 500; - color: #344356; - margin-bottom: 10px; - } - .info-inner{ - position: relative; - font-size: 13px; - color: #344356; - .copy-ico{ - position: absolute; - bottom: 0; - right: 0; - width: 16px; - height: 16px; - background: url(../../public/static/images/sub/copy_ico.svg)no-repeat center; - background-size: cover; + gap: 10px; + background-color: #3d3d3d; + border-radius: 2px; + width: 100px; + height: 30px; + margin: 0 5px; + span { + font-size: 13px; + color: #fff; } + .control-btn { + display: block; + width: 12px; + height: 12px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + &.minus { + background-image: url(../../public/static/images/canvas/minus.svg); + } + &.plus { + background-image: url(../../public/static/images/canvas/plus.svg); + } + } + } } -} - -// 견적서 -.estimate-list-wrap{ - display: flex; - align-items: center; - margin-bottom: 10px; - .estimate-box{ - flex: 1 ; + } + .canvas-depth2-wrap { + position: absolute; + top: -100%; + left: 0; + background-color: #383838; + width: 100%; + height: 50px; + transition: all 0.17s ease-in-out; + .canvas-depth2-inner { + display: flex; + align-items: center; + padding: 0 40px; + height: 100%; + .canvas-depth2-list { display: flex; align-items: center; - &:last-child{ - flex: none; - min-width: 220px; - } - .estimate-tit{ - width: 105px; - height: 30px; - line-height: 30px; - background-color: #F4F4F7; - border-radius: 100px; - text-align: center; - font-size: 13px; - font-weight: 500; - color: #344356; - } - .estimate-name{ - font-size: 13px; - color: #344356; - margin-left: 14px; - font-weight: 400; - } - } - &:last-child{ - margin-bottom: 0; - } -} - -// file drag box -.drag-file-box{ - padding: 10px; - .btn-area{ - padding-bottom: 15px; - border-bottom: 1px solid #ECF0F4; - } - .drag-file-area{ - position: relative; - margin-top: 15px; - p{ - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - font-size: 13px; - color: #ccc; - font-weight: 400; - cursor: default; - } - } - .file-list{ - .file-item{ - margin-bottom: 15px; - span{ - position: relative; - font-size: 13px; - color: #45576F; - font-weight: 400; - white-space: nowrap; - padding-right: 55px; - button{ - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 15px; - height: 15px; - background: url(../../public/static/images/sub/file_delete.svg)no-repeat center; - background-size: cover; - } - } - &:last-child{ - margin-bottom: 0; - } - } - } -} - -// 발전시물레이션 -.chart-wrap{ - display: flex; - gap: 20px; - width: 100%; - .sub-table-box{ height: 100%; - } - .chart-inner{ - flex: 1; - .chart-box{ - margin-bottom: 30px; - } - } - .chart-table-wrap{ - display: flex; - flex-direction: column; - flex: none; - width: 650px; - .sub-table-box{ - flex: 1; - &:first-child{ - margin-bottom: 20px; - } - } - } -} - -.chart-month-table{ - table{ - table-layout: fixed; - border-collapse:collapse; - border: 1px solid #ECF0F4; - border-radius: 4px; - thead{ - th{ - padding: 4.5px 0; - border-bottom: 1px solid #ECF0F4; - text-align: center; - font-size: 13px; - color: #45576F; - font-weight: 500; - background-color: #F8F9FA; - } - } - tbody{ - td{ - font-size: 13px; - color: #45576F; - text-align: center; - padding: 4.5px 0; - } - } - } -} - -.simulation-guide-wrap{ - display: flex; - padding: 20px; - .simulation-tit-wrap{ - padding-right: 40px; - border-right: 1px solid #EEEEEE; - span{ - display: block; + .canvas-depth2-item { + display: flex; + align-items: center; + margin-right: 26px; + height: 100%; + button { position: relative; - padding-left: 60px; - font-size: 15px; - color: #14324F; - font-weight: 600; - &::before{ + opacity: 0.55; + color: #fff; + font-size: 12px; + font-weight: normal; + height: 100%; + padding-right: 12px; + } + &.active { + button { + opacity: 1; + font-weight: 600; + &:after { content: ''; position: absolute; top: 50%; - left: 0; + right: 0; transform: translateY(-50%); - width: 40px; - height: 40px; - background: url(../../public/static/images/sub/simulation_guide.svg)no-repeat center; - background-size: cover; + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; + } } + } } - } - .simulation-guide-box{ - padding-left: 40px; - dl{ - margin-bottom: 25px; - dt{ - font-size: 13px; - color: #101010; - font-weight: 600; - margin-bottom: 5px; - } - dd{ - font-size: 12px; - color: #45576F; - font-weight: 400; - line-height: 24px; - } - &:last-child{ - margin-bottom: 0; + } + .canvas-depth2-btn-list { + display: flex; + align-items: center; + margin-left: auto; + height: 100%; + .depth2-btn-box { + display: flex; + align-items: center; + margin-right: 34px; + height: 100%; + transition: all 0.17s ease-in-out; + button { + position: relative; + font-size: 12px; + font-weight: 400; + height: 100%; + color: #fff; + padding-right: 12px; + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; } + } + &:last-child { + margin-right: 0; + } + &.mouse { + opacity: 0.55; + } } + } } + &.active { + top: 47px; + } + } + &.active { + padding-bottom: 50px; + } } -.module-total{ +// canvas-layout +.canvas-layout { + .canvas-page-list { + display: flex; + background-color: #1c1c1c; + border-top: 1px solid #000; + width: 100%; + .canvas-plane-wrap { + display: flex; + align-items: center; + max-width: calc(100% - 45px); + .canvas-page-box { + display: flex; + align-items: center; + background-color: #1c1c1c; + padding: 9.6px 20px; + border-right: 1px solid #000; + min-width: 0; + transition: all 0.17s ease-in-out; + span { + display: flex; + align-items: center; + width: 100%; + font-size: 12px; + font-family: 'Pretendard', sans-serif; + color: #aaa; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .close { + flex: none; + display: block; + width: 7px; + height: 8px; + margin-left: 15px; + background: url(../../public/static/images/canvas/plan_close_gray.svg) no-repeat center; + background-size: cover; + } + &.on { + background-color: #fff; + span { + font-weight: 600; + color: #101010; + } + .close { + background: url(../../public/static/images/canvas/plan_close_black.svg) no-repeat center; + } + &:hover { + background-color: #fff; + } + } + &:hover { + background-color: #000; + } + } + } + .plane-add { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + padding: 13.5px 0; + background-color: #1c1c1c; + border-right: 1px solid #000; + transition: all 0.17s ease-in-out; + span { + display: block; + width: 9px; + height: 9px; + background: url(../../public/static/images/canvas/plane_add.svg) no-repeat center; + background-size: cover; + } + &:hover { + background-color: #000; + } + } + } +} + +.canvas-frame { + position: relative; + height: calc(100% - 36.5px); + background-color: #fff; + canvas { + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 1600px; + height: 1000px; + } +} + +// sub-page +.sub-header { + position: fixed; + top: 46px; + left: 0; + width: 100%; + height: 46px; + border-bottom: 1px solid #000; + background: #2c2c2c; + z-index: 999; + .sub-header-inner { display: flex; align-items: center; - background-color: #F8F9FA; - padding: 9px 0; - margin-right: 4px; - border: 1px solid #ECF0F4; - border-top: none; - .total-title{ - flex: 1; - text-align: center; - font-size: 13px; - color: #344356; - font-weight: 500; + height: 100%; + padding: 0 100px; + .sub-header-title-wrap { + display: flex; + align-items: center; + .title-item { + position: relative; + padding: 0 24px; + a { + display: flex; + align-items: center; + .icon { + width: 22px; + height: 22px; + margin-right: 8px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + &.drawing { + background-image: url(../../public/static/images/main/drawing_icon.svg); + } + } + } + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 16px; + background-color: #d9d9d9; + } + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + &:after { + display: none; + } + } + } } - .total-num{ - flex: none; - width: 121px; - text-align: center; - font-size: 15px; - color: #344356; - font-weight: 500; + .sub-header-title { + font-size: 16px; + color: #fff; + font-weight: 600; } + .sub-header-location { + margin-left: auto; + display: flex; + align-items: center; + .location-item { + position: relative; + display: flex; + align-items: center; + padding: 0 10px; + span { + display: flex; + font-size: 12px; + color: #aaa; + font-weight: normal; + cursor: default; + } + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 4px; + height: 6px; + background: url(../../public/static/images/main/loaction_arr.svg) no-repeat center; + } + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + span { + color: #fff; + } + &:after { + display: none; + } + } + } + } + } } +// sub content +.sub-content { + padding-top: 46px; + .sub-content-inner { + max-width: 1720px; + margin: 0 auto; + padding-top: 20px; + .sub-content-box { + margin-bottom: 20px; + &:last-child { + margin-bottom: 0; + } + } + } + &.estimate { + display: flex; + flex-direction: column; + height: calc(100% - 36.5px); + overflow-y: auto; + padding-top: 0; + .sub-content-inner { + flex: 1; + width: 100%; + } + } +} +.sub-table-box { + padding: 20px; + border-radius: 6px; + border: 1px solid #e9eaed; + background: #fff; + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + .table-box-title-wrap { + display: flex; + align-items: center; + margin-bottom: 15px; + .title-wrap { + display: flex; + align-items: center; + h3 { + display: block; + font-size: 15px; + color: #101010; + font-weight: 600; + margin-right: 14px; + } + .option { + padding-left: 5px; + font-size: 13px; + color: #101010; + font-weight: 400; + } + .info-wrap { + display: flex; + align-items: center; + li { + position: relative; + padding: 0 6px; + font-size: 12px; + color: #101010; + font-weight: normal; + span { + font-weight: 600; + &.red { + color: #e23d70; + } + } + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 11px; + background-color: #d9d9d9; + } + &:first-child { + padding-left: 0; + } + &:last-child { + padding-right: 0; + &::after { + display: none; + } + } + } + } + } + } + .left-unit-box { + margin-left: auto; + display: flex; + align-items: center; + } + .promise-gudie { + display: block; + font-size: 13px; + font-weight: 700; + color: #101010; + margin-bottom: 20px; + } + .important { + color: #f00; + } + .sub-center-footer { + display: flex; + align-items: center; + justify-content: center; + margin-top: 20px; + } + .sub-right-footer { + display: flex; + align-items: center; + justify-content: flex-end; + margin-top: 20px; + } + .pagination-wrap { + margin-top: 24px; + } +} + +.infomation-wrap { + margin-bottom: 30px; +} + +.infomation-box-wrap { + display: flex; + align-items: center; + gap: 10px; + .sub-table-box { + flex: 1; + } + .info-title { + font-size: 14px; + font-weight: 500; + color: #344356; + margin-bottom: 10px; + } + .info-inner { + position: relative; + font-size: 13px; + color: #344356; + .copy-ico { + position: absolute; + bottom: 0; + right: 0; + width: 16px; + height: 16px; + background: url(../../public/static/images/sub/copy_ico.svg) no-repeat center; + background-size: cover; + } + } +} + +// 견적서 +.estimate-list-wrap { + display: flex; + align-items: center; + margin-bottom: 10px; + .estimate-box { + flex: 1; + display: flex; + align-items: center; + &:last-child { + flex: none; + min-width: 220px; + } + .estimate-tit { + width: 105px; + height: 30px; + line-height: 30px; + background-color: #f4f4f7; + border-radius: 100px; + text-align: center; + font-size: 13px; + font-weight: 500; + color: #344356; + } + .estimate-name { + font-size: 13px; + color: #344356; + margin-left: 14px; + font-weight: 400; + } + } + &:last-child { + margin-bottom: 0; + } +} + +// file drag box +.drag-file-box { + padding: 10px; + .btn-area { + padding-bottom: 15px; + border-bottom: 1px solid #ecf0f4; + } + .drag-file-area { + position: relative; + margin-top: 15px; + p { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 13px; + color: #ccc; + font-weight: 400; + cursor: default; + } + } + .file-list { + .file-item { + margin-bottom: 15px; + span { + position: relative; + font-size: 13px; + color: #45576f; + font-weight: 400; + white-space: nowrap; + padding-right: 55px; + button { + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 15px; + height: 15px; + background: url(../../public/static/images/sub/file_delete.svg) no-repeat center; + background-size: cover; + } + } + &:last-child { + margin-bottom: 0; + } + } + } +} + +// 발전시물레이션 +.chart-wrap { + display: flex; + gap: 20px; + width: 100%; + .sub-table-box { + height: 100%; + } + .chart-inner { + flex: 1; + .chart-box { + margin-bottom: 30px; + } + } + .chart-table-wrap { + display: flex; + flex-direction: column; + flex: none; + width: 650px; + .sub-table-box { + flex: 1; + &:first-child { + margin-bottom: 20px; + } + } + } +} + +.chart-month-table { + table { + table-layout: fixed; + border-collapse: collapse; + border: 1px solid #ecf0f4; + border-radius: 4px; + thead { + th { + padding: 4.5px 0; + border-bottom: 1px solid #ecf0f4; + text-align: center; + font-size: 13px; + color: #45576f; + font-weight: 500; + background-color: #f8f9fa; + } + } + tbody { + td { + font-size: 13px; + color: #45576f; + text-align: center; + padding: 4.5px 0; + } + } + } +} + +.simulation-guide-wrap { + display: flex; + padding: 20px; + .simulation-tit-wrap { + padding-right: 40px; + border-right: 1px solid #eeeeee; + span { + display: block; + position: relative; + padding-left: 60px; + font-size: 15px; + color: #14324f; + font-weight: 600; + &::before { + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 40px; + height: 40px; + background: url(../../public/static/images/sub/simulation_guide.svg) no-repeat center; + background-size: cover; + } + } + } + .simulation-guide-box { + padding-left: 40px; + dl { + margin-bottom: 25px; + dt { + font-size: 13px; + color: #101010; + font-weight: 600; + margin-bottom: 5px; + } + dd { + font-size: 12px; + color: #45576f; + font-weight: 400; + line-height: 24px; + } + &:last-child { + margin-bottom: 0; + } + } + } +} + +.module-total { + display: flex; + align-items: center; + background-color: #f8f9fa; + padding: 9px 0; + margin-right: 4px; + border: 1px solid #ecf0f4; + border-top: none; + .total-title { + flex: 1; + text-align: center; + font-size: 13px; + color: #344356; + font-weight: 500; + } + .total-num { + flex: none; + width: 121px; + text-align: center; + font-size: 15px; + color: #344356; + font-weight: 500; + } +} + +// 물건상세 +.information-help-wrap { + display: flex; + padding: 24px; + background-color: #f4f4f4; + border-radius: 4px; + margin-bottom: 15px; + .information-help-tit-wrap { + position: relative; + display: flex; + align-items: center; + padding-right: 40px; + border-right: 1px solid #e0e0e3; + .help-tit-icon { + width: 40px; + height: 40px; + border-radius: 50%; + margin-right: 10px; + background: #fff url(../../public/static/images/sub/information_help.svg) no-repeat center; + background-size: 20px 20px; + } + .help-tit { + font-size: 13px; + font-weight: 600; + color: #45576f; + } + } + .information-help-guide { + padding-left: 40px; + span { + display: block; + font-size: 12px; + font-weight: 400; + color: #45576f; + margin-bottom: 7px; + &:last-child { + margin-bottom: 0; + } + } + } +} diff --git a/src/styles/_main.scss b/src/styles/_main.scss index 334a0485..e80d8b83 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -1,557 +1,687 @@ // background img -.background-bord{ - position: absolute; - top: 46px; - left: 0; - width: 100%; - height: 280px; - background: url(../../public/static/images/main/main_background.png)no-repeat center; - background-size: cover; - z-index: 0; +.background-bord { + position: absolute; + top: 46px; + left: 0; + width: 100%; + height: 280px; + background: url(../../public/static/images/main/main_background.png) no-repeat center; + background-size: cover; + z-index: 0; } // main-wrap -.main-contents{ - position: relative; - z-index: 1; - padding-bottom: 15px; +.main-contents { + position: relative; + z-index: 1; + padding-bottom: 15px; } // contents -.store-id-wrap{ - display: flex; - align-items: center; - justify-content: center; - gap: 12px; - padding: 33.5px 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.08); - background-color: rgba(255, 255, 255, 0.05); - .store-id-title{ - position: relative; - padding-left: 32px; - font-size: 13px; - color: #fff; - &::before{ - content: ''; - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); - width: 20px; - height: 20px; - background: url(../../public/static/images/main/id_icon.svg)no-repeat center; - } - } - .store-arr{ - display: block; - width: 7px; - height: 10px; - background: url(../../public/static/images/main/store-arr.svg) no-repeat center; - } - .store-id-name{ - font-size: 16px; - color: #fff; - font-weight: 600; +.store-id-wrap { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + padding: 33.5px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + background-color: rgba(255, 255, 255, 0.05); + .store-id-title { + position: relative; + padding-left: 32px; + font-size: 13px; + color: #fff; + &::before { + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 20px; + height: 20px; + background: url(../../public/static/images/main/id_icon.svg) no-repeat center; } + } + .store-arr { + display: block; + width: 7px; + height: 10px; + background: url(../../public/static/images/main/store-arr.svg) no-repeat center; + } + .store-id-name { + font-size: 16px; + color: #fff; + font-weight: 600; + } } // main-search-form -.main-search-wrap{ +.main-search-wrap { + display: flex; + align-items: center; + justify-content: center; + padding: 45px 0; + .search-raido-wrap { display: flex; align-items: center; - justify-content: center; - padding: 45px 0; - .search-raido-wrap{ - display: flex; - align-items: center; - gap: 16px; - margin-right: 30px; - } + gap: 16px; + margin-right: 30px; + } } -.search-input-box{ - display: flex; - align-items: center; - width: 580px; - height: 45px; - border-radius: 100px; - padding: 0 20px; - border: 1px solid rgba(255, 255, 255, 0.30); - background: rgba(31, 31, 31, 0.30); - .main-search{ - flex: 1; - height: 100%; - font-size: 13px; - color: #fff; - background-color: transparent; - outline: none; - border: none; - font-family: 'Noto Sans JP', sans-serif; - } - .search-icon{ - width: 20px; - height: 100%; - background-image: url(../../public/static/images/main/main_search.svg); - background-repeat: no-repeat; - background-position: center; - background-size: 21px 21px; - } +.search-input-box { + display: flex; + align-items: center; + width: 580px; + height: 45px; + border-radius: 100px; + padding: 0 20px; + border: 1px solid rgba(255, 255, 255, 0.3); + background: rgba(31, 31, 31, 0.3); + .main-search { + flex: 1; + height: 100%; + font-size: 13px; + color: #fff; + background-color: transparent; + outline: none; + border: none; + font-family: 'Noto Sans JP', sans-serif; + } + .search-icon { + width: 20px; + height: 100%; + background-image: url(../../public/static/images/main/main_search.svg); + background-repeat: no-repeat; + background-position: center; + background-size: 21px 21px; + } } // main-contents-inner -.main-product-list-wrap{ - max-width: 1400px; - margin: 0 auto; - .main-product-list{ +.main-product-list-wrap { + max-width: 1400px; + margin: 0 auto; + .main-product-list { + display: flex; + gap: 24px; + margin-bottom: 24px; + .product-item { + display: flex; + flex-direction: column; + padding: 40px; + border-radius: 6px; + background: #fff; + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + &.item01 { + flex: 1; + max-height: 400px; + } + &.item02 { + flex: none; + width: 451px; + max-height: 400px; + } + &.item03 { + flex: 1; + } + &.item04 { + flex: none; + width: 351px; + } + &.item05 { + flex: none; + width: 451px; + } + .product-item-title-wrap { display: flex; - gap: 24px; - margin-bottom: 24px; - .product-item{ + align-items: center; + .product-item-title { + display: flex; + align-items: center; + font-size: 16px; + color: #101010; + font-weight: 600; + .item-logo { + display: block; + width: 40px; + height: 40px; + border-radius: 50px; + background: #14324f; + margin-right: 12px; + background-repeat: no-repeat; + background-size: 22px 22px; + background-position: center; + &.ico01 { + background-image: url(../../public/static/images/main/product_ico01.svg); + } + &.ico02 { + background-image: url(../../public/static/images/main/product_ico02.svg); + } + &.ico03 { + background-image: url(../../public/static/images/main/product_ico03.svg); + } + &.ico04 { + background-image: url(../../public/static/images/main/product_ico04.svg); + } + &.ico05 { + background-image: url(../../public/static/images/main/product_ico05.svg); + } + } + } + .more-btn { + display: block; + width: 20px; + height: 20px; + margin-left: auto; + background: url(../../public/static/images/main/more_btn.svg) no-repeat center; + } + } + .product-item-content { + margin-top: 30px; + overflow: hidden; + .recently-list { + .recently-item { + border: 1px solid #f2f2f2; + background-color: transparent; + padding: 29.9px 20px; + margin-bottom: 5px; + cursor: pointer; + .item-inner { + display: flex; + align-items: center; + span { + position: relative; + display: block; + font-size: 13px; + color: #101010; + font-weight: 400; + padding: 0 10px; + &.time { + padding-left: 22px; + &::before { + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 14px; + height: 14px; + background: url(../../public/static/images/main/clock.svg) no-repeat center; + background-size: cover; + } + } + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 10px; + background-color: #bbb; + } + &:last-child { + &:after { + display: none; + } + } + } + } + &:last-child { + margin-bottom: 5px; + } + } + } + .notice-box { + height: 100%; + overflow-y: auto; + .notice-day { + font-size: 13px; + color: #666; + font-weight: 400; + margin-bottom: 7px; + } + .notice-title { + font-size: 14px; + color: #101010; + font-weight: 600; + margin-bottom: 25px; + line-height: 24px; + word-break: keep-all; + } + .notice-contents { + font-size: 12px; + color: #666; + font-weight: 400; + line-height: 22px; + span { + position: relative; + display: block; + padding-left: 10px; + &::before { + content: ''; + position: absolute; + top: 10px; + left: 3px; + width: 3px; + height: 3px; + border-radius: 100%; + background-color: #666; + } + } + } + &::-webkit-scrollbar { + width: 4px; /* 스크롤바의 너비 */ + } + &::-webkit-scrollbar-thumb { + background: #697c8f; /* 스크롤바의 색상 */ + } + &::-webkit-scrollbar-track { + background: transparent; /*스크롤바 뒷 배경 색상*/ + } + } + .faq-item { + position: relative; + margin-bottom: 10px; + cursor: pointer; + .faq-item-inner { display: flex; - flex-direction: column; - padding: 40px; - border-radius: 6px; - background: #FFF; - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - &.item01{flex: 1; max-height: 400px;} - &.item02{flex: none; width: 451px; max-height: 400px;} - &.item03{flex: 1;} - &.item04{flex: none; width: 351px;} - &.item05{flex: none; width: 451px;} - .product-item-title-wrap{ - display: flex; - align-items: center; - .product-item-title{ - display: flex; - align-items: center; - font-size: 16px; - color: #101010; - font-weight: 600; - .item-logo{ - display: block; - width: 40px; - height: 40px; - border-radius: 50px; - background: #14324F; - margin-right: 12px; - background-repeat: no-repeat; - background-size: 22px 22px; - background-position: center; - &.ico01{background-image: url(../../public/static/images/main/product_ico01.svg);} - &.ico02{background-image: url(../../public/static/images/main/product_ico02.svg);} - &.ico03{background-image: url(../../public/static/images/main/product_ico03.svg);} - &.ico04{background-image: url(../../public/static/images/main/product_ico04.svg);} - &.ico05{background-image: url(../../public/static/images/main/product_ico05.svg);} - } - } - .more-btn{ - display: block; - width: 20px; - height: 20px; - margin-left: auto; - background: url(../../public/static/images/main/more_btn.svg)no-repeat center; - } + align-items: center; + + .faq-num { + flex: none; + padding: 7px 12.5px; + font-size: 13px; + color: #101010; + font-weight: 600; + border-radius: 110px; + border: 1px solid rgba(242, 242, 242, 0.95); + margin-right: 20px; } - .product-item-content{ - margin-top: 30px; - overflow: hidden; - .recently-list{ - .recently-item{ - border: 1px solid #F2F2F2; - background-color: transparent; - padding: 29.9px 20px; - margin-bottom: 5px; - cursor: pointer; - .item-inner{ - display: flex; - align-items: center; - span{ - position: relative; - display: block; - font-size: 13px; - color: #101010; - font-weight: 400; - padding: 0 10px; - &.time{ - padding-left: 22px; - &::before{ - content: ''; - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); - width: 14px; - height: 14px; - background:url(../../public/static/images/main/clock.svg)no-repeat center; - background-size: cover; - } - } - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 10px; - background-color: #BBB; - } - &:last-child{ - &:after{ - display: none; - } - } - } - } - &:last-child{ - margin-bottom: 5px; - } - } - } - .notice-box{ - height: 100%; - overflow-y: auto; - .notice-day{ - font-size: 13px; - color: #666; - font-weight: 400; - margin-bottom: 7px; - } - .notice-title{ - font-size: 14px; - color: #101010; - font-weight: 600; - margin-bottom: 25px; - line-height: 24px; - word-break: keep-all; - } - .notice-contents{ - font-size: 12px; - color: #666; - font-weight: 400; - line-height: 22px; - span{ - position: relative; - display: block; - padding-left: 10px; - &::before{ - content: ''; - position: absolute; - top: 10px; - left: 3px; - width: 3px; - height: 3px; - border-radius: 100%; - background-color: #666; - } - } - } - &::-webkit-scrollbar {width: 4px; /* 스크롤바의 너비 */} - &::-webkit-scrollbar-thumb {background: #697C8F; /* 스크롤바의 색상 */} - &::-webkit-scrollbar-track {background: transparent; /*스크롤바 뒷 배경 색상*/} - } - .faq-item{ - position: relative; - margin-bottom: 10px; - cursor: pointer; - .faq-item-inner{ - display: flex; - align-items: center; - - .faq-num{ - flex: none; - padding: 7px 12.5px; - font-size: 13px; - color: #101010; - font-weight: 600; - border-radius: 110px; - border: 1px solid rgba(242, 242, 242, 0.95); - margin-right: 20px; - } - .faq-title{ - width: 0; - flex: 1 1 auto; - font-size: 13px; - color: #101010; - font-weight: 500; - padding-right: 96px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .faq-day{ - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - font-size: 13px; - color: #101010; - font-weight: 400; - } - } - &:last-child{ - margin-bottom: 0; - } - } - .data-download-wrap{ - width: 100%; - .data-down{ - display: block; - width: 100%; - padding: 20px; - text-align: left; - border-radius: 4px; - background-color: #697C8F; - margin-bottom: 5px; - transition: background .17s ease-in-out; - span{ - position: relative; - display: block; - padding-right: 30px; - font-size: 13px; - color: #fff; - font-weight: 400; - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 18px; - height: 16px; - background: url(../../public/static/images/main/download.svg)no-repeat center; - background-size: cover; - } - } - &:last-child{ - margin-bottom: 0; - } - &:hover{ - background-color: #859eb6; - } - } - } - .contact-info-list{ - padding: 25px 30px; - border-radius: 4px; - background-color: #F4F4F7; - .info-item{ - display: flex; - align-items: center; - padding: 15px 0; - border-bottom: 1px solid #fff; - &:first-child{padding-top: 0;} - &:last-child{padding-bottom: 0; border: none;} - .icon-box{ - display: flex; - margin-right: 12px; - } - .infor-data{ - font-size: 13px; - color: #101010; - font-weight: 500; - } - } - } + .faq-title { + width: 0; + flex: 1 1 auto; + font-size: 13px; + color: #101010; + font-weight: 500; + padding-right: 96px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } - } - &:last-child{ + .faq-day { + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + font-size: 13px; + color: #101010; + font-weight: 400; + } + } + &:last-child { margin-bottom: 0; + } } + .data-download-wrap { + width: 100%; + .data-down { + display: block; + width: 100%; + padding: 20px; + text-align: left; + border-radius: 4px; + background-color: #697c8f; + margin-bottom: 5px; + transition: background 0.17s ease-in-out; + span { + position: relative; + display: block; + padding-right: 30px; + font-size: 13px; + color: #fff; + font-weight: 400; + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 18px; + height: 16px; + background: url(../../public/static/images/main/download.svg) no-repeat center; + background-size: cover; + } + } + &:last-child { + margin-bottom: 0; + } + &:hover { + background-color: #859eb6; + } + } + } + .contact-info-list { + padding: 25px 30px; + border-radius: 4px; + background-color: #f4f4f7; + .info-item { + display: flex; + align-items: center; + padding: 15px 0; + border-bottom: 1px solid #fff; + &:first-child { + padding-top: 0; + } + &:last-child { + padding-bottom: 0; + border: none; + } + .icon-box { + display: flex; + margin-right: 12px; + } + .infor-data { + font-size: 13px; + color: #101010; + font-weight: 500; + } + } + } + } } + &:last-child { + margin-bottom: 0; + } + } } // loginpage -.login-wrap{ - position: relative; +.login-wrap { + position: relative; + width: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + background: url(../../public/static/images/main/login_bg.png) no-repeat center; + background-size: cover; + .login-inner { + max-width: 500px; width: 100%; - min-height: 100vh; - display: flex; - flex-direction: column; - justify-content: center; - background: url(../../public/static/images/main/login_bg.png) no-repeat center; - background-size: cover; - .login-inner{ - max-width: 500px; - width: 100%; - margin: 0 auto; - .login-logo{ - display: block; - margin-bottom: 25px; + margin: 0 auto; + .login-logo { + display: block; + margin-bottom: 25px; + } + .login-input-frame { + padding: 40px 50px; + border-radius: 6px; + background: rgba(255, 255, 255, 0.97); + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + .login-frame-tit { + font-size: 18px; + color: #364864; + font-weight: 400; + padding-bottom: 30px; + border-bottom: 1px solid #e5e9ef; + span { + display: block; + font-weight: 600; + margin-bottom: 5px; } - .login-input-frame{ - padding: 40px 50px; - border-radius: 6px; - background: rgba(255, 255, 255, 0.97); - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - .login-frame-tit{ - font-size: 18px; - color: #364864; - font-weight: 400; - padding-bottom: 30px; - border-bottom: 1px solid #E5E9EF; - span{ - display: block; - font-weight: 600; - margin-bottom: 5px; - } - } - .login-input-wrap{ - margin-top: 30px; - .login-area{ - position: relative; - display: flex; - align-items: center; - border: 1px solid #E5E9EF; - height: 45px; - padding-left: 40px; - padding-right: 15px; - margin-bottom: 15px; - .login-input{ - flex: 1; - height: 100%; - background-color: transparent; - font-size: 13px; - font-weight: 400; - color: #D1D7E0; - &::placeholder{ - color: #D1D7E0; - } - } - &::before{ - content: ''; - position: absolute; - top: 50%; - left: 15px; - transform: translateY(-50%); - width: 10px; - height: 12px; - background-size: cover; - } - button{ - width: 20px; - height: 100%; - background-repeat: no-repeat; - background-position: center; - } - &.id{ - &::before{ - background: url(../../public/static/images/main/login_id.svg)no-repeat center; - } - .id-delete{ - background-image: url(../../public/static/images/main/id_delete.svg); - background-size: 17px 17px; - } - } - &.password{ - margin-bottom: 20px; - &::before{ - background: url(../../public/static/images/main/login_password.svg)no-repeat center; - } - .password-hidden{ - background-image: url(../../public/static/images/main/password_hidden.svg); - background-size: 19px 13px; - &.visible{ - background-image: url(../../public/static/images/main/password_visible.svg); - } - } - } - } - .login-btn-box{ - margin-bottom: 20px; - .login-btn{ - display: block; - width: 100%; - height: 45px; - background-color: #5C6773; - color: #fff; - font-size: 15px; - font-weight: 600; - border-radius: 4px; - transition: background .15s ease-in-out; - &:hover{ - background-color: #717e8d; - } - } - } - .reset-password{ - width: 100%; - text-align: center; - a{ - position: relative; - font-size: 13px; - color: #364864; - font-weight: 400; - padding-right: 16px; - &::before{ - content: ''; - position: absolute; - top: calc(50% + 1px); - right: 0; - transform: translateY(-50%); - width: 6px; - height: 8px; - background: url(../../public/static/images/main/login-arr.svg)no-repeat center; - } - } - } - } + &.pw-reset { + font-size: 13px; } - .login-guide-wrap{ - position: relative; - margin-left: 10px; - margin-top: 30px; - padding-left: 15px; + } + .login-input-wrap { + margin-top: 30px; + .login-area { + position: relative; + display: flex; + align-items: center; + border: 1px solid #e5e9ef; + height: 45px; + padding-left: 40px; + padding-right: 15px; + margin-bottom: 15px; + .login-input { + flex: 1; + height: 100%; + background-color: transparent; font-size: 13px; - color: #fff; - line-height: 24px; - a{ - color: #fff; - font-weight: 600; - text-decoration: underline; + font-weight: 400; + color: #6c819c; + &::placeholder { + font-size: 13px; + font-weight: 400; + color: #d1d7e0; } - span{ - position: absolute; - top: 0; - left: 0; + } + &::before { + content: ''; + position: absolute; + top: 50%; + left: 15px; + transform: translateY(-50%); + width: 10px; + height: 12px; + background-size: cover; + } + button { + width: 20px; + height: 100%; + background-repeat: no-repeat; + background-position: center; + } + &.id { + &::before { + background: url(../../public/static/images/main/login_id.svg) no-repeat center; } + .id-delete { + background-image: url(../../public/static/images/main/id_delete.svg); + background-size: 17px 17px; + } + } + &.email { + &::before { + background: url(../../public/static/images/main/login_email.svg) no-repeat center; + width: 12px; + height: 9px; + } + .id-delete { + background-image: url(../../public/static/images/main/id_delete.svg); + background-size: 17px 17px; + } + } + &.password { + margin-bottom: 20px; + &::before { + background: url(../../public/static/images/main/login_password.svg) no-repeat center; + } + .password-hidden { + background-image: url(../../public/static/images/main/password_hidden.svg); + background-size: 19px 13px; + &.visible { + background-image: url(../../public/static/images/main/password_visible.svg); + } + } + } } + .login-btn { + display: block; + width: 100%; + height: 45px; + background-color: #5c6773; + color: #fff; + font-size: 15px; + font-weight: 600; + border-radius: 4px; + transition: background 0.15s ease-in-out; + &:hover { + background-color: #717e8d; + } + &.light { + background-color: #fff; + border: 1px solid #5c6773; + color: #5c6773; + } + } + .login-btn-box { + margin-bottom: 20px; + } + .pwreset-btn-box { + display: flex; + } + .reset-password { + width: 100%; + text-align: center; + button { + position: relative; + font-size: 13px; + color: #364864; + font-weight: 400; + padding-right: 16px; + &::before { + content: ''; + position: absolute; + top: calc(50% + 1px); + right: 0; + transform: translateY(-50%); + width: 6px; + height: 8px; + background: url(../../public/static/images/main/login-arr.svg) no-repeat center; + } + } + } + } } - .login-copyright{ - position: absolute; - bottom: 40px; - left: 50%; - transform: translateX(-50%); - font-size: 11px; + .login-guide-wrap { + position: relative; + margin-left: 10px; + margin-top: 30px; + padding-left: 15px; + font-size: 13px; + color: #fff; + line-height: 24px; + a { color: #fff; - font-weight: 500; + font-weight: 600; + text-decoration: underline; + } + span { + position: absolute; + top: 0; + left: 0; + } } + } + .login-copyright { + position: absolute; + bottom: 40px; + left: 50%; + transform: translateX(-50%); + font-size: 11px; + color: #fff; + font-weight: 500; + } } -.d-check-box{ - &.login{ - margin-bottom: 25px; - label{ - padding-left: 20px; - color: #364864; - &:before{ - width: 22px; - height: 22px; - top: -1px; - border-color: #A8B6C7; - border-radius: 3px; - transition: background .05s ease-in-out; - } - } +.d-check-box { + &.login { + margin-bottom: 25px; + label { + padding-left: 20px; + color: #364864; + &:before { + width: 22px; + height: 22px; + top: -1px; + border-color: #a8b6c7; + border-radius: 3px; + transition: background 0.05s ease-in-out; + } } - input[type=checkbox]:checked + label::before{ - border-color: #A8B6C7; - background-color: #A8B6C7; + } + input[type='checkbox']:checked + label::before { + border-color: #a8b6c7; + background-color: #a8b6c7; + } + input[type='checkbox']:checked + label::after { + border-color: #fff; + width: 7px; + height: 11px; + top: -2px; + left: 1px; + } +} + +// 회원가입 +.center-page-wrap { + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; + min-height: 100vh; + background-color: #f4f4f7; + overflow-x: hidden; + .center-page-inner { + width: 100%; + max-width: 1720px; + margin: 0 auto; + .center-page-tit { + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 24px; } - input[type=checkbox]:checked + label::after{ - border-color: #fff; - width: 7px; - height: 11px; - top: -2px; - left: 1px; + .sub-table-box { + &.signup { + margin-bottom: 20px; + } } -} \ No newline at end of file + .sign-up-btn-wrap { + display: flex; + justify-content: flex-end; + } + &.complete { + max-width: 1000px; + } + } +} + +// 회원가입 완료 +.complete-box-wrap { + padding: 72px 80px; + .complete-tit { + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 17px; + } + .complete-txt { + font-size: 13px; + font-weight: 400; + color: #101010; + margin-bottom: 27px; + } + .complete-email-wrap { + padding: 36px 30px; + border-radius: 2px; + background: #f4f4f7; + margin-bottom: 20px; + .email-info { + font-size: 13px; + font-weight: 400; + color: #000; + span { + color: #204af4; + font-weight: 500; + } + } + } + .complete-btn { + display: flex; + justify-content: flex-end; + } +} diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index b7bb20ec..9343ae23 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -14,7 +14,6 @@ $alert-color: #101010; scale: 1; } } - @keyframes unmountpop { from { opacity: 1; @@ -31,7 +30,6 @@ $alert-color: #101010; font-weight: 400; color: #fff; } - .bold-font { font-size: 12px; font-weight: 500; @@ -40,6 +38,8 @@ $alert-color: #101010; .modal-pop-wrap { position: fixed; + top: 200px; + right: 100px; width: 100%; height: -webkit-fit-content; height: -moz-fit-content; @@ -48,67 +48,51 @@ $alert-color: #101010; border-radius: 4px; background-color: #272727; z-index: 9999999; - &.xxxm { width: 240px; } - &.xxm { width: 270px; } - &.xm { width: 300px; } - &.ssm { width: 380px; } - &.sm { width: 580px; } - &.r { width: 400px; } - &.lr { width: 440px; } - &.lrr { width: 480px; } - &.ml { width: 530px; } - &.l-2 { width: 640px; } - &.lx-2 { width: 740px; } - &.lx { width: 770px; } - &.l { width: 800px; } - &.mount { - animation: mountpop .17s ease-in-out forwards; + animation: mountpop 0.17s ease-in-out forwards; } - &.unmount { - animation: unmountpop .17s ease-in-out forwards; + animation: unmountpop 0.17s ease-in-out forwards; } - &.alert { position: absolute; top: 50%; @@ -116,25 +100,21 @@ $alert-color: #101010; transform: translate(-50%, -50%); background-color: transparent; border: none; - .modal-head { background-color: transparent; padding: 0 0 8px; - .modal-close { width: 20px; height: 20px; background: url(../../public/static/images/canvas/alert_close.svg) no-repeat center; } } - .modal-body { background-color: #fff; padding: 22px; border-radius: 4px; border: 1px solid #101010; color: $alert-color; - .alert-title { font-size: 13px; font-weight: 700; @@ -144,7 +124,6 @@ $alert-color: #101010; } } } - .modal-head { display: flex; align-items: center; @@ -156,7 +135,6 @@ $alert-color: #101010; color: $pop-color; font-weight: 700; } - .modal-close { margin-left: auto; color: transparent; @@ -166,64 +144,50 @@ $alert-color: #101010; background: url(../../public/static/images/canvas/modal_close.svg) no-repeat center; } } - .modal-body { padding: 24px; - .modal-btn-wrap { display: flex; align-items: center; gap: 5px; - button { flex: 1; } - &.sub { button { flex: 1 1 auto; padding: 0; } - margin-bottom: 14px; } } - .modal-check-btn-wrap { margin-top: 15px; - .check-wrap-title { font-size: $pop-normal-size; color: $pop-color; font-weight: 600; - &.light { font-weight: $pop-normal-weight; } } - .flex-check-box { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; - &.for2 { justify-content: flex-end; - button { width: calc(50% - 5px); } - &.btn { gap: 5px; - button { width: calc(50% - 2.5px); } } } - &.for-line { button { flex: 1; @@ -231,22 +195,18 @@ $alert-color: #101010; } } } - .outer-line-wrap { - border-top: 1px solid #3C3C3C; + border-top: 1px solid #3c3c3c; margin-top: 10px; padding-top: 15px; margin-bottom: 15px; - > div { margin-bottom: 15px; - &:last-child { margin-bottom: 0; } } } - .modal-guide { display: block; font-size: $pop-normal-size; @@ -258,17 +218,15 @@ $alert-color: #101010; .adsorption-point { display: flex; align-items: center; - background-color: #3A3A3A; + background-color: #3a3a3a; border-radius: 3px; padding-left: 11px; overflow: hidden; transition: all 0.17s ease-in-out; - span { font-size: $pop-normal-size; color: #898989; } - i { display: flex; align-items: center; @@ -278,11 +236,10 @@ $alert-color: #101010; font-size: 13px; color: #898989; } - &.act { i { color: $pop-color; - background-color: #1083E3; + background-color: #1083e3; } } } @@ -293,83 +250,68 @@ $alert-color: #101010; align-items: center; gap: 15px; padding-bottom: 15px; - &.border { border-bottom: 1px solid #424242; } } - .grid-option-wrap { .grid-option-box { display: flex; align-items: center; background-color: transparent; - border: 1px solid #3D3D3D; + border: 1px solid #3d3d3d; border-radius: 2px; padding: 15px 10px; gap: 20px; margin-bottom: 10px; - .grid-input-form { display: flex; align-items: center; - span { flex: none; font-size: $pop-normal-size; color: $pop-color; font-weight: $pop-bold-weight; } - .input-grid { width: 54px; - input { width: 100%; } } } - &:last-child { margin-bottom: 0; } } } - .select-form { .sort-select { width: 100%; } } - .grid-select { flex: 1; - &.no-flx { flex: unset; } - .sort-select { width: 100%; background-color: #313131; min-width: auto; font-size: 12px; border: none; - p { font-size: 12px; } - > ul { border: none; } } - &.right { p { text-align: right; } - ul { li { justify-content: flex-end; @@ -377,11 +319,9 @@ $alert-color: #101010; } } } - .grid-btn-wrap { padding-top: 15px; text-align: right; - button { padding: 0 10px; } @@ -393,16 +333,13 @@ $alert-color: #101010; color: $pop-color; font-weight: $pop-normal-weight; padding-bottom: 15px; - } - .grid-direction { display: flex; align-items: center; gap: 5px; flex: 1; } - .direction { width: 22px; height: 22px; @@ -412,21 +349,17 @@ $alert-color: #101010; background-position: center; background-size: 16px 15px; border-radius: 50%; - transition: all .15s ease-in-out; + transition: all 0.15s ease-in-out; opacity: 0.6; - &.down { transform: rotate(180deg); } - &.left { transform: rotate(-90deg); } - &.right { transform: rotate(90deg); } - &:hover, &.act { opacity: 1; @@ -441,26 +374,21 @@ $alert-color: #101010; font-weight: $pop-bold-weight; } } - .input-move-wrap { display: flex; align-items: center; gap: 5px; - span { color: $pop-color; font-size: $pop-normal-size; } - .input-move { width: 130px; - input { width: 100%; } } } - .direction-move-wrap { flex: none; display: grid; @@ -472,7 +400,6 @@ $alert-color: #101010; .placement-table { table { table-layout: fixed; - tr { th { display: flex; @@ -483,14 +410,12 @@ $alert-color: #101010; padding: 18px 0; border-bottom: 1px solid #424242; } - td { font-size: $pop-normal-size; color: $pop-color; border-bottom: 1px solid #424242; padding-left: 20px; } - &:first-child { td, th { @@ -499,7 +424,6 @@ $alert-color: #101010; } } } - .tooltip { position: relative; display: block; @@ -509,20 +433,17 @@ $alert-color: #101010; background: url(../../public/static/images/canvas/pop_tip.svg) no-repeat center; background-size: cover; } - &.light { padding: 0; - - th, td { + th, + td { color: $alert-color; border-bottom: none; - border-top: 1px solid #EFEFEF; + border-top: 1px solid #efefef; } - th { padding: 14px 0; } - tr { &:first-child { td, @@ -530,7 +451,6 @@ $alert-color: #101010; padding-top: 14px; } } - &:last-child { td, th { @@ -546,24 +466,20 @@ $alert-color: #101010; align-items: center; gap: 10px; } - .placement-option { display: flex; align-items: center; gap: 20px; } - .select-wrap { div { width: 100%; } } - .flex-ment { display: flex; align-items: center; gap: 5px; - span { font-size: $pop-normal-size; color: $pop-color; @@ -580,22 +496,18 @@ $alert-color: #101010; display: flex; align-items: center; margin-bottom: 14px; - &:last-child { margin-bottom: 0; } - .outline-form { // width: 50%; margin-right: 15px; } } - &:last-child { border-bottom: 1px solid #424242; } } - .outline-form { display: flex; align-items: center; @@ -607,7 +519,6 @@ $alert-color: #101010; font-weight: $pop-bold-weight; color: $pop-color; margin-right: 10px; - &.thin { width: auto; font-weight: $pop-normal-weight; @@ -628,7 +539,6 @@ $alert-color: #101010; background-size: 12px 12px; background-position: center; } - &:last-child { margin-right: 0; } @@ -636,28 +546,24 @@ $alert-color: #101010; .cul-wrap { display: flex; - .outline-box { width: 50%; margin-right: 15px; - .outline-form { width: 100%; margin-bottom: 14px; margin-right: 0; - &:last-child { margin-bottom: 0; } } } - .cul-box { display: flex; align-items: center; justify-content: center; width: 50%; - background-color: #3D3D3D; + background-color: #3d3d3d; border-radius: 2px; } } @@ -665,7 +571,7 @@ $alert-color: #101010; // 외벽선 속성 설정 .properties-guide { font-size: $pop-normal-size; - color: #AAA; + color: #aaa; font-weight: $pop-normal-weight; margin-bottom: 14px; } @@ -676,19 +582,16 @@ $alert-color: #101010; font-weight: $pop-bold-weight; margin-bottom: 10px; } - .properties-setting-wrap { &.outer { margin-top: 24px; } - .setting-btn-wrap { display: flex; align-items: center; padding: 14px 0; border-top: 1px solid #424242; border-bottom: 1px solid #424242; - .setting-btn { display: block; width: 100%; @@ -697,21 +600,17 @@ $alert-color: #101010; color: #fff; font-weight: 700; border-radius: 2px; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.green { background-color: #305941; - border: 1px solid #45CD7D; - + border: 1px solid #45cd7d; &:hover { background-color: #3a6b4e; } } - &.blue { - background-color: #2E5360; - border: 1px solid #3FBAE6; - + background-color: #2e5360; + border: 1px solid #3fbae6; &:hover { background-color: #365f6e; } @@ -727,39 +626,34 @@ $alert-color: #101010; grid-template-rows: 1fr 1fr; gap: 24px 10px; margin-bottom: 24px; - .shape-box { display: flex; align-items: center; justify-content: center; width: 100%; padding: 13px; - background-color: #3D3D3D; - transition: background .15s ease-in-out; - + background-color: #3d3d3d; + transition: background 0.15s ease-in-out; img { max-width: 100%; } } - .shape-title { font-size: $pop-normal-size; font-weight: $pop-bold-weight; color: $pop-color; margin-top: 10px; text-align: center; - transition: color .15s ease-in-out; + transition: color 0.15s ease-in-out; } - .shape-menu-box { &.act, &:hover { .shape-box { - background-color: #008BFF; + background-color: #008bff; } - .shape-title { - color: #008BFF; + color: #008bff; } } } @@ -770,14 +664,12 @@ $alert-color: #101010; border-top: 1px solid #424242; border-bottom: 1px solid #424242; } - .padding-form { padding-left: 23px; } - .discrimination-box { padding: 16px 12px; - border: 1px solid #3D3D3D; + border: 1px solid #3d3d3d; border-radius: 2px; } @@ -791,10 +683,8 @@ $alert-color: #101010; .eaves-keraba-table { display: table; border-collapse: collapse; - .eaves-keraba-item { display: table-row; - .eaves-keraba-th, .eaves-keraba-td { font-size: $pop-normal-size; @@ -804,26 +694,22 @@ $alert-color: #101010; vertical-align: middle; padding-bottom: 14px; } - .eaves-keraba-td { padding-left: 10px; } - .eaves-keraba-ico { display: flex; align-items: center; justify-content: center; padding: 5px; - background-color: #3D3D3D; - border: 1px solid #3D3D3D; + background-color: #3d3d3d; + border: 1px solid #3d3d3d; border-radius: 2px; cursor: pointer; - &.act { - border: 1px solid #ED0004; + border: 1px solid #ed0004; } } - &:last-child { .eaves-keraba-th, .eaves-keraba-td { @@ -832,17 +718,14 @@ $alert-color: #101010; } } } - .guide { font-size: $pop-normal-size; font-weight: $pop-normal-weight; color: $pop-color; margin-bottom: 24px; - &.sm { margin-bottom: 15px; } - span { display: block; } @@ -855,14 +738,12 @@ $alert-color: #101010; padding-bottom: 14px; border-bottom: 1px solid #424242; margin-bottom: 14px; - span { font-size: $pop-normal-size; color: $pop-color; font-weight: $pop-bold-weight; margin-right: 10px; } - .allocation-edit { display: flex; align-items: center; @@ -874,7 +755,6 @@ $alert-color: #101010; font-weight: $pop-normal-weight; border: 1px solid #484848; background-color: #323234; - i { display: block; width: 12px; @@ -891,14 +771,11 @@ $alert-color: #101010; align-items: center; gap: 10px; margin-bottom: 10px; - .flex-ment { gap: 10px; - .dec { text-decoration: underline; } - .delete { display: block; width: 15px; @@ -907,7 +784,6 @@ $alert-color: #101010; background-size: cover; } } - &:last-child { margin-bottom: 0; } @@ -918,7 +794,6 @@ $alert-color: #101010; display: flex; align-items: center; gap: 5px; - button { display: flex; align-items: center; @@ -931,8 +806,7 @@ $alert-color: #101010; border: 1px solid #646464; border-radius: 2px; padding: 0 10px; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; i { height: 15px; display: block; @@ -940,30 +814,25 @@ $alert-color: #101010; background-repeat: no-repeat; background-position: center; background-size: cover; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.allocation01 { background-image: url(../../public/static/images/canvas/allocation_icon01_white.svg); width: 15px; } - &.allocation02 { background-image: url(../../public/static/images/canvas/allocation_icon02_white.svg); width: 18px; } } - &.act, &:hover { color: #101010; border: 1px solid #101010; background-color: #fff; - i { &.allocation01 { background-image: url(../../public/static/images/canvas/allocation_icon01_black.svg); } - &.allocation02 { background-image: url(../../public/static/images/canvas/allocation_icon02_black.svg); } @@ -985,13 +854,11 @@ $alert-color: #101010; grid-template-rows: repeat(3, 90px); gap: 10px; margin-bottom: 10px; - .shape-menu-box { border-radius: 2px; - background-color: #3D3D3D; + background-color: #3d3d3d; padding: 8px; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; .shape-box { display: flex; justify-content: center; @@ -1002,10 +869,9 @@ $alert-color: #101010; background-color: #313131; border-radius: 2px; } - &.act, &:hover { - background-color: #008BFF; + background-color: #008bff; } } } @@ -1016,37 +882,32 @@ $alert-color: #101010; justify-content: center; gap: 5px; padding: 5px; - background-color: #3D3D3D; + background-color: #3d3d3d; margin-bottom: 24px; - .library-btn { width: 30px; height: 30px; - border: 1px solid #6C6C6C; + border: 1px solid #6c6c6c; border-radius: 2px; background-color: transparent; background-repeat: no-repeat; background-position: center; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.ico01 { background-image: url(../../public/static/images/canvas/shape_labrary01.svg); background-size: 14px 14px; } - &.ico02 { background-image: url(../../public/static/images/canvas/shape_labrary02.svg); background-size: 13px 17px; } - &.ico03 { background-image: url(../../public/static/images/canvas/shape_labrary03.svg); background-size: 17px 13px; } - &:hover { - border-color: #1083E3; - background-color: #1083E3; + border-color: #1083e3; + background-color: #1083e3; } } } @@ -1054,33 +915,27 @@ $alert-color: #101010; .plane-shape-wrapper { display: flex; gap: 10px; - .plane-box { padding: 10px; border-radius: 2px; - background-color: #3D3D3D; - + background-color: #3d3d3d; .plane-box-tit { font-size: $pop-normal-size; font-weight: 600; color: $pop-color; margin-bottom: 10px; } - &.shape-box { flex: 1; - .shape-box-inner { display: flex; gap: 10px; min-height: 140px; - .shape-img { position: relative; flex: 1; background-color: #fff; border-radius: 2px; - img { position: absolute; top: 50%; @@ -1088,21 +943,18 @@ $alert-color: #101010; transform: translate(-50%, -50%); } } - .shape-data { flex: none; width: 190px; background-color: #313131; border-radius: 2px; padding: 15px; - .eaves-keraba-table { .eaves-keraba-item { .eaves-keraba-th, .eaves-keraba-td { padding-bottom: 10px; } - &:last-child { .eaves-keraba-th, .eaves-keraba-td { @@ -1114,13 +966,11 @@ $alert-color: #101010; } } } - &.direction-box { display: flex; flex-direction: column; flex: none; width: 180px; - .plane-direction-box { flex: 1; display: flex; @@ -1132,43 +982,36 @@ $alert-color: #101010; } } } - .plane-direction { width: 150px; position: relative; height: 120px; - span { position: absolute; font-size: 12px; font-weight: 500; - color: #B1B1B1; - + color: #b1b1b1; &.top { top: 0; left: 50%; transform: translateX(-50%); } - &.right { top: 50%; right: 0; transform: translateY(-50%); } - &.bottom { bottom: 0; left: 50%; transform: translateX(-50%); } - &.left { top: 50%; left: 0; transform: translateY(-50%); } } - .plane-btn { position: absolute; width: 28px; @@ -1179,32 +1022,27 @@ $alert-color: #101010; background-repeat: no-repeat; background-position: center; border-radius: 50%; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.up { top: 22px; left: 50%; transform: translateX(-50%); } - &.right { top: 50%; right: 32px; transform: translateY(-50%) rotate(90deg); } - &.down { bottom: 22px; left: 50%; transform: translateX(-50%) rotate(180deg); } - &.left { top: 50%; left: 32px; transform: translateY(-50%) rotate(270deg); } - &:hover, &.act { background-color: #fff; @@ -1232,7 +1070,6 @@ $alert-color: #101010; align-items: center; justify-content: center; } - .discrimination-tit { font-size: 13px; color: #fff; @@ -1244,13 +1081,11 @@ $alert-color: #101010; min-height: 206px; gap: 24px; margin-top: 14px; - .object-size-img { position: relative; flex: none; width: 200px; background-color: #fff; - img { position: absolute; top: 50%; @@ -1264,11 +1099,10 @@ $alert-color: #101010; .display-change-wrap { margin: 24px 0; } - .warning { font-size: $pop-normal-size; font-weight: $pop-normal-weight; - color: #FFAFAF; + color: #ffafaf; } // 각 변 속성 변경 @@ -1282,12 +1116,10 @@ $alert-color: #101010; .drawing-flow-wrap { display: flex; gap: 10px; - .discrimination-box { flex: 1; display: flex; flex-direction: column; - .object-direction-wrap { flex: 1; } @@ -1299,7 +1131,6 @@ $alert-color: #101010; align-items: center; justify-content: center; } - .compas-box-inner { position: relative; width: 200px; @@ -1323,206 +1154,157 @@ $alert-color: #101010; top: 12.5px; left: 50%; font-size: 11px; - color: #8B8B8B; + color: #8b8b8b; font-weight: 500; -webkit-user-select: none; -moz-user-select: none; -ms-use-select: none; user-select: none; } - &:nth-child(1) { transform: rotate(180deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(180deg); } } - &:nth-child(2) { transform: rotate(195deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(165deg); } } - &:nth-child(3) { transform: rotate(210deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(150deg); } } - &:nth-child(4) { transform: rotate(225deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(135deg); } } - &:nth-child(5) { transform: rotate(240deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(120deg); } } - &:nth-child(6) { transform: rotate(255deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(105deg); } } - &:nth-child(7) { transform: rotate(270deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(90deg); } } - &:nth-child(8) { transform: rotate(285deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(75deg); } } - &:nth-child(9) { transform: rotate(300deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(60deg); } } - &:nth-child(10) { transform: rotate(315deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(45deg); } } - &:nth-child(11) { transform: rotate(330deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(30deg); } } - &:nth-child(12) { transform: rotate(345deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(15deg); } } - &:nth-child(13) { transform: rotate(0deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(0deg); } } - &:nth-child(14) { transform: rotate(15deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-15deg); } } - &:nth-child(15) { transform: rotate(30deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-30deg); } } - &:nth-child(16) { transform: rotate(45deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-45deg); } } - &:nth-child(17) { transform: rotate(60deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-60deg); } } - &:nth-child(18) { transform: rotate(75deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-75deg); } } - &:nth-child(19) { transform: rotate(90deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-90deg); } } - &:nth-child(20) { transform: rotate(105deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-105deg); } } - &:nth-child(21) { transform: rotate(120deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-120deg); } } - &:nth-child(22) { transform: rotate(135deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-135deg); } } - &:nth-child(23) { transform: rotate(150deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-150deg); } } - &:nth-child(24) { transform: rotate(165deg) translate(-50%, -50%); - i { transform: translateX(-50%) rotate(-165deg); } } - &.act { &::after { content: ''; @@ -1534,13 +1316,11 @@ $alert-color: #101010; height: 5px; background-color: #fff; } - i { color: #fff; } } } - .compas { position: absolute; top: 50%; @@ -1550,7 +1330,6 @@ $alert-color: #101010; height: 148px; border: 4px solid #fff; border-radius: 50%; - .compas-arr { width: 100%; height: 100%; @@ -1560,14 +1339,12 @@ $alert-color: #101010; } } - // 지붕모듈선택 .roof-module-tab { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; - .module-tab-bx { flex: 1; height: 34px; @@ -1576,19 +1353,17 @@ $alert-color: #101010; border-radius: 2px; background-color: transparent; font-size: 12px; - color: #AAA; + color: #aaa; text-align: center; cursor: default; - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.act { - background-color: #1083E3; - border: 1px solid #1083E3; + background-color: #1083e3; + border: 1px solid #1083e3; color: #fff; font-weight: 500; } } - .tab-arr { display: block; width: 9px; @@ -1597,8 +1372,7 @@ $alert-color: #101010; background-position: center; background-size: cover; background-image: url(../../public/static/images/canvas/module_tab_arr.svg); - transition: all .15s ease-in-out; - + transition: all 0.15s ease-in-out; &.act { background-image: url(../../public/static/images/canvas/module_tab_arr_white.svg); } @@ -1607,14 +1381,11 @@ $alert-color: #101010; .roof-module-compas { margin-bottom: 24px; - .compas-box-inner { width: 280px; height: 253px; - .circle { top: 86%; - &:nth-child(1), &:nth-child(7), &:nth-child(13), @@ -1627,23 +1398,20 @@ $alert-color: #101010; transform: translateX(-50%); width: 1px; height: 6px; - background-color: #8B8B8B; + background-color: #8b8b8b; } } - i { top: 32px; } - &.act { i { - color: #8B8B8B; + color: #8b8b8b; } } } } } - .center-wrap { display: flex; flex-direction: column; @@ -1654,7 +1422,6 @@ $alert-color: #101010; .module-table-flex-wrap { display: flex; gap: 10px; - .outline-form { flex: 1; } @@ -1662,7 +1429,6 @@ $alert-color: #101010; .module-box-tab { display: flex; - .module-btn { flex: 1; border-top: 1px solid #505050; @@ -1673,11 +1439,10 @@ $alert-color: #101010; height: 30px; font-size: 12px; font-weight: 400; - + transition: all 0.15s ease-in-out; &:first-child { border-left: 1px solid #505050; } - &.act { border-color: #fff; background-color: #fff; @@ -1688,39 +1453,32 @@ $alert-color: #101010; .module-table-box { flex: 1; - background-color: #3D3D3D; + background-color: #3d3d3d; border-radius: 2px; - .module-table-inner { padding: 10px; - .outline-form { span { width: auto; } } - .module-table-tit { padding: 10px 0; font-size: 12px; color: #fff; - border-bottom: 1px solid #4D4D4D; + border-bottom: 1px solid #4d4d4d; } - .eaves-keraba-table { width: 100%; margin-top: 15px; - .eaves-keraba-th { width: 72px; } - .eaves-keraba-th, .eaves-keraba-td { padding-bottom: 5px; } } - .self-table-tit { font-size: 12px; font-weight: 500; @@ -1728,25 +1486,20 @@ $alert-color: #101010; padding-bottom: 15px; } } - .warning-guide { padding: 20px; - .warning { - color: #FFCACA; + color: #ffcaca; max-height: 55px; overflow-y: auto; padding-right: 30px; - &::-webkit-scrollbar { width: 4px; background-color: transparent; } - &::-webkit-scrollbar-thumb { - background-color: #D9D9D9; + background-color: #d9d9d9; } - &::-webkit-scrollbar-track { background-color: transparent; } @@ -1756,27 +1509,23 @@ $alert-color: #101010; .module-self-table { display: table; - border-top: 1px solid #4D4D4D; + border-top: 1px solid #4d4d4d; border-collapse: collapse; width: 100%; - .self-table-item { display: table-row; - .self-item-td, .self-item-th { display: table-cell; vertical-align: middle; - border-bottom: 1px solid #4D4D4D; + border-bottom: 1px solid #4d4d4d; } - .self-item-th { width: 60px; font-size: 12px; font-weight: 500; color: #fff; } - .self-item-td { font-size: 12px; font-weight: 400; @@ -1790,38 +1539,155 @@ $alert-color: #101010; display: flex; align-items: center; margin-top: 15px; - button { margin-left: auto; } } - .hexagonal-wrap { .hexagonal-item { padding: 15px 0; - border-bottom: 1px solid #4D4D4D; - + border-bottom: 1px solid #4d4d4d; &:first-child { padding-top: 0; } - &:last-child { padding-bottom: 0; border: none; } - .hexagonal-flx-auto { display: flex; justify-content: space-between; } - .hexagonal-flx { display: flex; align-items: center; - button { margin-left: auto; } } } -} \ No newline at end of file +} + +// 회로 및 가대설정 +.circuit-check-inner { + padding: 5px 0; +} + +.x-scroll-table { + overflow-x: auto; + padding-bottom: 5px; + .roof-module-table { + min-width: 1200px; + } + &::-webkit-scrollbar { + height: 4px; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: #d9d9d9; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } +} + +.circuit-right-wrap { + display: flex; + justify-content: flex-end; +} + +.circuit-data-form { + display: flex; + flex-direction: column; + gap: 5px; + min-height: 60px; + padding: 12px; + border: 1px solid rgba(255, 255, 255, 0.2); +} +.circuit-table-tit { + color: #fff; + font-size: 12px; + font-weight: 600; + padding: 11px 10px; + background-color: #474747; + border: 1px solid #505050; + border-bottom: none; +} + +.circuit-overflow { + max-height: 560px; + overflow-y: auto; + margin-bottom: 15px; + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: #d9d9d9; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } +} + +.circuit-table-flx-wrap { + display: flex; + gap: 10px; + margin-bottom: 10px; + .circuit-table-flx-box { + flex: 1; + display: flex; + flex-direction: column; + .bottom-wrap { + margin-top: auto; + } + .roof-module-table { + table { + table-layout: fixed; + } + } + } +} + +.circuit-count-input { + display: flex; + align-items: center; + gap: 10px; +} + +// 모듈부가기능 +.additional-radio-wrap { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 15px 0; + margin-bottom: 24px; +} +.additional-wrap { + padding: 24px 0; + border-top: 1px solid #424242; +} + +.additional-color-wrap { + display: flex; + align-items: center; + padding: 5px 0; + gap: 15px; + .additional-color-box { + display: flex; + align-items: center; + gap: 8px; + .additional-color { + display: block; + width: 16px; + height: 16px; + &.pink { + border: 2px solid #ea10ac; + background-color: #16417d; + } + &.white { + border: 2px solid #fff; + background-color: #001027; + } + } + } +} diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss index 7804b800..c288c8e1 100644 --- a/src/styles/_reset.scss +++ b/src/styles/_reset.scss @@ -1,725 +1,924 @@ * { - -webkit-text-size-adjust:none; - -moz-text-size-adjust:none; - -ms-text-size-adjust:none; - text-size-adjust: none; - box-sizing: content-box + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + -ms-text-size-adjust: none; + text-size-adjust: none; + box-sizing: content-box; } -*, ::after, ::before { - box-sizing: border-box; +*, +::after, +::before { + box-sizing: border-box; } -html, body{ - width: 100%; - height: 100%; - font-size: 16px; +html, +body { + width: 100%; + height: 100%; + font-size: 16px; } -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - vertical-align: baseline; - font-family: 'Noto Sans JP', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-smooth: never; +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + font-family: 'Noto Sans JP', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-smooth: never; } /* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; } body { - line-height: 1.4; + line-height: 1.4; +} +body:first-of-type caption { + display: none; } -body:first-of-type caption { display:none;} -ol, ul { - list-style: none; +ol, +ul { + list-style: none; } -blockquote, q { - quotes: none; +blockquote, +q { + quotes: none; } -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; } table { - width: 100%; - border-collapse: separate; - border-spacing:0; - border:0 none; + width: 100%; + border-collapse: separate; + border-spacing: 0; + border: 0 none; } -caption, th, td { - text-align:left; - font-weight: normal; - border:0; +caption, +th, +td { + text-align: left; + font-weight: normal; + border: 0; } -a { - cursor:pointer; - color:#000; +a { + cursor: pointer; + color: #000; } -a, a:hover, a:active { - text-decoration:none; - -webkit-tap-highlight-color: transparent; +a, +a:hover, +a:active { + text-decoration: none; + -webkit-tap-highlight-color: transparent; } /*form_style*/ -input, select, textarea, button, a, label { - -webkit-tap-highlight-color:rgba(0,0,0,0); +input, +select, +textarea, +button, +a, +label { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -button,input[type=text], input[type=button] { - -webkit-appearance: none; - -webkit-border-radius: 0; - -webkit-appearance:none; - appearance: none; - border-radius: 0 +button, +input[type='text'], +input[type='button'] { + -webkit-appearance: none; + -webkit-border-radius: 0; + -webkit-appearance: none; + appearance: none; + border-radius: 0; } -input[type=checkbox], input[type=radio] { - box-sizing: border-box; - padding: 0; +input[type='checkbox'], +input[type='radio'] { + box-sizing: border-box; + padding: 0; } -input, select, button { - border:0 none; - outline:none; - margin:0; +input, +select, +button { + border: 0 none; + outline: none; + margin: 0; } select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } select::-ms-expand { - display: none; + display: none; } ::-webkit-input-placeholder { - line-height:1; - font-weight:300; - font-size:0.938rem; - letter-spacing:-0.6px; - color:#8b8b8b; + line-height: 1; + font-weight: 300; + font-size: 0.938rem; + letter-spacing: -0.6px; + color: #8b8b8b; } -.log-box ::-webkit-input-placeholder{ - color:#8b8b8b; +.log-box ::-webkit-input-placeholder { + color: #8b8b8b; } -button{ - background: transparent; - font-family: 'Noto Sans JP', sans-serif; - border: none; - padding: 0; - margin: 0; - line-height: 1.4; - color: inherit; - outline: none; - cursor: pointer; +button { + background: transparent; + font-family: 'Noto Sans JP', sans-serif; + border: none; + padding: 0; + margin: 0; + line-height: 1.4; + color: inherit; + outline: none; + cursor: pointer; } -.pre{ - font-family: 'Pretendard', sans-serif !important; +.pre { + font-family: 'Pretendard', sans-serif !important; } // margin -.mt5{margin-top: 5px !important;} -.mt10{margin-top: 10px !important;} -.mt15{margin-top: 15px !important;} -.mb5{margin-bottom: 5px !important;} -.mb10{margin-bottom: 10px !important;} -.mb15{margin-bottom: 15px !important;} -.mr5{margin-right: 5px !important;} -.mr10{margin-right: 10px !important;} -.mr15{margin-right: 15px !important;} -.ml5{margin-left: 5px !important;} -.ml10{margin-left: 10px !important;} -.ml15{margin-left: 15px !important;} - -// align -.al-l{text-align: left !important;} -.al-r{text-align: right !important;} -.al-c{text-align: center !important;} - - -// button -.btn-frame{ - display: inline-block; - padding: 0 7px; - height: 34px; - line-height: 34px; - border-radius: 2px; - color: #fff; - font-size: 12px; - font-weight: 400; - border: 1px solid #000; - text-align: center; - font-family: 'Pretendard', sans-serif; - transition: all .17s ease-in-out; - cursor: pointer; - &.block{ - width: 100%; - } - &.small{ - font-family: 'Noto Sans JP', sans-serif; - height: 30px; - line-height: 30px; - font-size: 13px; - } - - &.deepgray{ - background-color: #2C2C2C; - border: 1px solid #484848; - } - &.gray{ - background-color: #3C3C3C; - border: 1px solid #545454; - } - &.dark{ - background-color: #1C1C1C; - border: 1px solid #484848; - } - &.modal{ - font-family: 'Noto Sans JP', sans-serif; - background-color: #272727; - border: 1px solid #484848; - color: #aaa; - &:hover{ - background-color: #1083E3; - border: 1px solid #1083E3; - color: #fff; - font-weight: 500; - } - } - &.sub-tab{ - height: 30px; - padding: 0 10px; - line-height: 28px; - font-family: 'Noto Sans JP', sans-serif; - background-color: #2D2D2D; - border: 1px solid #393939; - color: #aaa; - &.act, - &:hover{ - background-color: #414E6C; - border: 1px solid #414E6C; - color: #fff; - font-weight: 500; - } - } - &:hover, - &.act{ - background-color: #1083E3; - border: 1px solid #1083E3; - color: #fff; - font-weight: 500; - } - &.block{ - display: block; - width: 100%; - } - &.ico-flx{ - display: flex; - align-items: center; - .ico{ - margin-right: 10px; - } - &:hover, - &.act{ - font-weight: 400; - } - } +.mt5 { + margin-top: 5px !important; +} +.mt10 { + margin-top: 10px !important; +} +.mt15 { + margin-top: 15px !important; +} +.mb5 { + margin-bottom: 5px !important; +} +.mb10 { + margin-bottom: 10px !important; +} +.mb15 { + margin-bottom: 15px !important; +} +.mr5 { + margin-right: 5px !important; +} +.mr10 { + margin-right: 10px !important; +} +.mr15 { + margin-right: 15px !important; +} +.ml5 { + margin-left: 5px !important; +} +.ml10 { + margin-left: 10px !important; +} +.ml15 { + margin-left: 15px !important; } -.btn-origin{ - display: inline-block; +// align +.al-l { + text-align: left !important; +} +.al-r { + text-align: right !important; +} +.al-c { + text-align: center !important; +} + +// button +.btn-frame { + display: inline-block; + padding: 0 7px; + height: 34px; + line-height: 34px; + border-radius: 2px; + color: #fff; + font-size: 12px; + font-weight: 400; + border: 1px solid #000; + text-align: center; + font-family: 'Pretendard', sans-serif; + transition: all 0.17s ease-in-out; + cursor: pointer; + &.block { + width: 100%; + } + &.small { + font-family: 'Noto Sans JP', sans-serif; height: 30px; - padding: 0 14px; - border-radius: 2px; - background-color: #101010; - color: #fff; + line-height: 30px; font-size: 13px; - font-weight: 400; - transition: all .15s ease-in-out; - &.navy{ - background-color: #304961; - &:hover{ - background-color: #1083E3; - } + } + + &.deepgray { + background-color: #2c2c2c; + border: 1px solid #484848; + } + &.gray { + background-color: #3c3c3c; + border: 1px solid #545454; + } + &.dark { + background-color: #1c1c1c; + border: 1px solid #484848; + } + &.modal { + font-family: 'Noto Sans JP', sans-serif; + background-color: #272727; + border: 1px solid #484848; + color: #aaa; + &:hover { + background-color: #1083e3; + border: 1px solid #1083e3; + color: #fff; + font-weight: 500; } - &.grey{ - background-color: #94A0AD; - &:hover{ - background-color: #607F9A; - } + } + &.sub-tab { + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: #2d2d2d; + border: 1px solid #393939; + color: #aaa; + &.act, + &:hover { + background-color: #414e6c; + border: 1px solid #414e6c; + color: #fff; + font-weight: 500; } + } + &.roof { + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + &.blue { + background-color: #414e6c; + border: 1px solid #414e6c; + &:hover { + background-color: #414e6c; + border: 1px solid #414e6c; + } + } + &.white { + background-color: #fff; + border: 1px solid #fff; + color: #101010; + &:hover { + background-color: #fff; + border: 1px solid #fff; + color: #101010; + } + } + &:hover { + font-weight: 400; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + } + } + &.self { + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #676767; + color: #aaaaaa; + &:hover { + background-color: #272727; + border-color: #676767; + font-weight: 400; + } + } + &:hover, + &.act { + background-color: #1083e3; + border: 1px solid #1083e3; + color: #fff; + font-weight: 500; + } + &.block { + display: block; + width: 100%; + } + &.ico-flx { + display: flex; + align-items: center; + .ico { + margin-right: 10px; + } + &:hover, + &.act { + font-weight: 400; + } + } +} + +.btn-origin { + display: inline-block; + height: 30px; + padding: 0 10px; + border-radius: 2px; + background-color: #101010; + color: #fff; + font-size: 13px; + font-weight: 400; + transition: all 0.15s ease-in-out; + &.navy { + background-color: #304961; + &:hover { + background-color: #233546; + } + } + &.grey { + background-color: #94a0ad; + &:hover { + background-color: #607f9a; + } + } } // select -.sort-select{ - position: relative; - display: inline-block; - min-width: 100px; - height: 30px; - line-height: 30px; - padding: 0 25px 0 10px; - background-color: #373737; - border: 1px solid #3F3F3F; - border-radius: 2px; - border-top-left-radius: 2px; +.sort-select { + position: relative; + display: inline-block; + min-width: 100px; + height: 30px; + line-height: 30px; + padding: 0 25px 0 10px; + background-color: #373737; + border: 1px solid #3f3f3f; + border-radius: 2px; + border-top-left-radius: 2px; + color: #fff; + cursor: pointer; + p { + font-size: 13px; color: #fff; - cursor: pointer; - p{ - font-size: 13px; + height: 100%; + } + .select-item-wrap { + position: absolute; + top: 100%; + left: -1px; + clip-path: inset(0 0 100% 0); + width: calc(100% + 2px); + padding: 8px 0; + max-height: 100px; + overflow-y: auto; + background-color: #373737; + border: 1px solid #3f3f3f; + border-radius: 2px; + transition: all 0.17s ease-in-out; + visibility: hidden; + z-index: 999; + .select-item { + display: flex; + align-items: center; + padding: 8px 20px; + line-height: 1.4; + transition: all 0.17s ease-in-out; + button { + font-size: 12px; color: #fff; - height: 100%; + line-height: 1.4; + } + &:hover { + background-color: #2c2c2c; + } } - .select-item-wrap{ - position: absolute; - top: 100%; - left: -1px; - clip-path:inset(0 0 100% 0); - width: calc(100% + 2px); - padding: 8px 0; - max-height: 100px; - overflow-y: auto; - background-color: #373737; - border: 1px solid #3F3F3F; - border-radius: 2px; - transition: all 0.17s ease-in-out; - visibility: hidden; - z-index: 999; - .select-item{ - display: flex; - align-items: center; - padding: 8px 20px; - line-height: 1.4; - transition: all .17s ease-in-out; - button{ - font-size: 12px; - color: #fff; - line-height: 1.4; - } - &:hover{ - background-color: #2C2C2C; - } - } - &::-webkit-scrollbar { - width: 2px; - background-color: transparent; - - } - &::-webkit-scrollbar-thumb { - background-color: #5a5a5a; - border-radius: 10px; - } - &::-webkit-scrollbar-track { - background-color: transparent; - } + &::-webkit-scrollbar { + width: 2px; + background-color: transparent; } - &::after{ - content: ''; - position: absolute; - top: 50%; - right: 7px; - transform: translateY(-50%); - width: 10px; - height: 6px; - background: url(/static/images/common/select-arr.svg) no-repeat center; - background-size: cover; - transition: all .17s ease-in-out; + &::-webkit-scrollbar-thumb { + background-color: #5a5a5a; + border-radius: 10px; } - &.active{ - .select-item-wrap{ - clip-path: inset(0 0 0 0); - visibility: visible; - } - &:after{ - transform: translateY(-50%) rotate(-180deg); - } + &::-webkit-scrollbar-track { + background-color: transparent; } + } + &::after { + content: ''; + position: absolute; + top: 50%; + right: 7px; + transform: translateY(-50%); + width: 10px; + height: 6px; + background: url(/static/images/common/select-arr.svg) no-repeat center; + background-size: cover; + transition: all 0.17s ease-in-out; + } + &.active { + .select-item-wrap { + clip-path: inset(0 0 0 0); + visibility: visible; + } + &:after { + transform: translateY(-50%) rotate(-180deg); + } + } } -.select-light{ - position: relative; +.select-light { + position: relative; + display: block; + width: 100%; + height: 30px; + background: #fff url(../../public/static/images/common/select_light_arr.svg) calc(100% - 11px) center no-repeat; + background-size: 10px 6px; + border: 1px solid #eee; + padding: 0 30px 0 10px; + font-size: 13px; + color: #45576f; + font-family: 'Noto Sans JP', sans-serif; + cursor: pointer; + &:disabled { + opacity: 1; + background-color: #fafafa; + color: #999; + cursor: default; + } + &.black { + color: #101010; + } + &.dark { + background: #323234 url(../../public/static/images/common/select_dark_arr.svg) calc(100% - 11px) center no-repeat; + color: #898989; + font-size: 12px; + border-radius: 2px; + border: none; + } +} + +// input +.form-input { + label { + display: block; + color: #aaa; + font-size: 12px; + font-weight: 500; + margin-bottom: 10px; + } +} +input[type='number'], +input[type='text'] { + &.input-origin { + display: inline-block; + height: 30px; + line-height: 30px; + border-radius: 2px; + background-color: #323234; + color: #fff; + font-size: 12px; + font-weight: 500; + font-family: 'Pretendard', sans-serif; + padding: 0 10px; + letter-spacing: 0px; + text-align: right; + &::placeholder { + opacity: 1; + font-size: 12px; + letter-spacing: 0px; + } + &.block { + width: 100%; + } + &:read-only { + color: #aaa; + } + &.plane { + font-family: 'Noto Sans JP', sans-serif; + border: 1px solid #525252; + background-color: transparent; + } + } + &.input-light { display: block; width: 100%; height: 30px; - background: #FFF url(../../public/static/images/common/select_light_arr.svg) calc(100% - 11px) center no-repeat; - background-size: 10px 6px; + padding: 0 10px; border: 1px solid #eee; - padding: 0 30px 0 10px; - font-size: 13px; - color: #45576F; + border-radius: 2px; + background-color: #fff; font-family: 'Noto Sans JP', sans-serif; - cursor: pointer; - &:disabled{ - opacity: 1; - background-color: #FAFAFA; - color: #999; - cursor: default; - } - &.black{ - color: #101010; - } - &.dark{ - background: #323234 url(../../public/static/images/common/select_dark_arr.svg) calc(100% - 11px) center no-repeat; - color: #898989; - font-size: 12px; - border-radius: 2px; - border: none; + font-size: 13px; + color: #45576f; + font-weight: normal; + transition: border-color 0.17s ease-in-out; + text-align: left; + &:read-only { + background-color: #fafafa; + color: #999999; } + } } - -// input -.form-input{ - label{ - display: block; - color: #aaa; - font-size: 12px; - font-weight: 500; - margin-bottom: 10px; - } -} -input[type=number], -input[type=text]{ - &.input-origin{ - display: inline-block; - height: 30px; - line-height: 30px; - border-radius: 2px; - background-color: #323234; - color: #fff; - font-size: 12px; - font-weight: 500; - font-family: 'Pretendard', sans-serif; - padding: 0 10px; - letter-spacing: 0px; - text-align: right; - &::placeholder{ - opacity: 1; - font-size: 12px; - letter-spacing: 0px; - } - &.block{ - width: 100%; - } - &:read-only{ - color: #AAA; - } - &.plane{ - font-family: 'Noto Sans JP', sans-serif; - border: 1px solid #525252; - background-color: transparent; - } - } - &.input-light{ - display: block; - width: 100%; - height: 30px; - padding: 0 10px; - border: 1px solid #eee; - border-radius: 2px; - background-color: #fff; - font-family: 'Noto Sans JP', sans-serif; - font-size: 13px; - color: #45576F; - font-weight: normal; - transition: border-color .17s ease-in-out; - text-align: left; - &:read-only{ - background-color: #FAFAFA; - color: #999999; - } - } -} - - - // check-btn -.check-btn{ - display: flex; - align-items: center; - height: 30px; - background-color: #3A3A3A; - border-radius: 3px; - transition: all .17s ease-in-out; - .check-area{ - flex: none; - width: 30px; - height: 100%; - border-right: 1px solid #272727; - background: url(../../public/static/images/canvas/check-grey.svg)no-repeat center; - background-size: 11px 9px; +.check-btn { + display: flex; + align-items: center; + height: 30px; + background-color: #3a3a3a; + border-radius: 3px; + transition: all 0.17s ease-in-out; + .check-area { + flex: none; + width: 30px; + height: 100%; + border-right: 1px solid #272727; + background: url(../../public/static/images/canvas/check-grey.svg) no-repeat center; + background-size: 11px 9px; + } + .title-area { + padding: 0 10px; + font-size: 12px; + color: #898989; + font-weight: 400; + } + &.block { + width: 100%; + } + &:hover, + &.act { + background-color: #fff; + .check-area { + border-right: 1px solid #101010; + background: url(../../public/static/images/canvas/check-black.svg) no-repeat center; } - .title-area{ - padding: 0 10px; - font-size: 12px; - color: #898989; - font-weight: 400; - } - &.block{ - width: 100%; - } - &:hover, - &.act{ - background-color: #fff; - .check-area{ - border-right: 1px solid #101010; - background: url(../../public/static/images/canvas/check-black.svg)no-repeat center; - } - .title-area{ - color: #101010; - font-weight: 600; - } + .title-area { + color: #101010; + font-weight: 600; } + } } // arr-btn -.arr-btn{ - display: block; - height: 30px; - border-radius: 3px; - background-color: #3A3A3A; - padding: 0 11px; - text-align: left; - transition: all .17s ease-in-out; - span{ - position: relative; - font-size: 12px; - color: #898989; - font-weight: 400; - padding-right: 15px; - &:after{ - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/arr_btn_ico.svg)no-repeat center; - } +.arr-btn { + display: block; + height: 30px; + border-radius: 3px; + background-color: #3a3a3a; + padding: 0 11px; + text-align: left; + transition: all 0.17s ease-in-out; + span { + position: relative; + font-size: 12px; + color: #898989; + font-weight: 400; + padding-right: 15px; + &:after { + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/arr_btn_ico.svg) no-repeat center; + } + } + &:hover, + &.act { + background-color: #fff; + span { + color: #101010; + font-weight: 500; + &:after { + background: url(../../public/static/images/canvas/arr_btn_ico_black.svg) no-repeat center; + } + } + } + &.dark { + text-align: center; + background-color: #272727; + border: 1px solid #484848; + span { + color: #fff; + &:after { + background: url(../../public/static/images/canvas/arr_btn_ico_white.svg) no-repeat center; + } } &:hover, - &.act{ - background-color: #fff; - span{ - color: #101010; - font-weight: 500; - &:after{ - background: url(../../public/static/images/canvas/arr_btn_ico_black.svg)no-repeat center; - } - } - } - &.dark{ - text-align: center; - background-color: #272727; - border: 1px solid #484848; - span{ - color: #Fff; - &:after{ - background: url(../../public/static/images/canvas/arr_btn_ico_white.svg)no-repeat center; - } - } - &:hover, - &.act{ - background-color: #1083E3; - border: 1px solid #1083E3; - } + &.act { + background-color: #1083e3; + border: 1px solid #1083e3; } + } } // radio .d-check-radio, -.d-check-box{ - line-height: 1.1; +.d-check-box { + line-height: 1.1; + cursor: pointer; + input[type='checkbox'], + input[type='radio'] { + position: static; + margin-left: 0; cursor: pointer; - input[type=checkbox], - input[type=radio]{ - position: static; - margin-left: 0; - cursor: pointer; - opacity: 0; - z-index: 1; - flex: 0 0 auto; + opacity: 0; + z-index: 1; + flex: 0 0 auto; + } + label { + position: relative; + padding-left: 10px; + margin-bottom: 0; + word-break: break-all; + line-height: 1.2; + display: inline; + vertical-align: top; + color: #fff; + font-size: 13px; + font-weight: 400; + cursor: pointer; + } + &.light { + label { + color: #45576f; } - label{ - position: relative; - padding-left: 10px; - margin-bottom: 0; - word-break: break-all; - line-height: 1.2; - display: inline; - vertical-align: top; - color: #fff; - font-size: 13px; - font-weight: 400; - cursor: pointer; - } - &.light{ - label{ - color: #45576F; - } - } - &.no-text{ - label{ - padding-left: 0; - } + } + &.no-text { + label { + padding-left: 0; } + } } .d-check-radio { - label{ - &::before{ - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top:2px; - left: 0; - margin-left: -12px; - border: 1px solid #999999; - border-radius: 100%; - background-color: transparent; - text-align:center; - font-size:13px; - line-height:1.4; - transition: border 0.15s ease-in-out, color 0.15s ease-in-out; - } - &::after{ - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 9px; - height: 9px; - top:6px; - left: 4px; - margin-left: -12px; - border: none; - border-radius: 100%; - background-color: #fff; - text-align:center; - font-size:13px; - line-height:1.4; - opacity: 0; - visibility: hidden; - transition: opacity 0.15s ease-in-out, color 0.15s ease-in-out; - } + label { + &::before { + cursor: pointer; + content: ''; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + top: 2px; + left: 0; + margin-left: -12px; + border: 1px solid #999999; + border-radius: 100%; + background-color: transparent; + text-align: center; + font-size: 13px; + line-height: 1.4; + transition: + border 0.15s ease-in-out, + color 0.15s ease-in-out; } - &.light{ - label{ - &:before{ - border-color: #D6D6D7; - } - &:after{ - background-color: #697C8F; - } - } + &::after { + cursor: pointer; + content: ''; + display: inline-block; + position: absolute; + width: 9px; + height: 9px; + top: 6px; + left: 4px; + margin-left: -12px; + border: none; + border-radius: 100%; + background-color: #fff; + text-align: center; + font-size: 13px; + line-height: 1.4; + opacity: 0; + visibility: hidden; + transition: + opacity 0.15s ease-in-out, + color 0.15s ease-in-out; } - input[type=radio]:checked + label::after{ - opacity: 1; - visibility: visible; + } + &.light { + label { + &:before { + border-color: #d6d6d7; + } + &:after { + background-color: #697c8f; + } } - &.pop{ - label{ - font-size: 12px; - &:before{ - width: 16px; - height: 16px; - border-color: #fff; - } - &:after{ - width: 8px; - height: 8px; - background-color: #fff; - } - } + } + input[type='radio']:checked + label::after { + opacity: 1; + visibility: visible; + } + &.pop { + label { + font-size: 12px; + &:before { + width: 16px; + height: 16px; + border-color: #fff; + } + &:after { + width: 8px; + height: 8px; + background-color: #fff; + } } + } } // check-box -.d-check-box{ - label{ - &::before{ - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top: 2px; - left: 0; - margin-left: -12px; - border: 1px solid #D6D6D7; - background-color: transparent; - transition: border 0.15s ease-in-out, color 0.15s ease-in-out; - } - &:after{ - cursor: pointer; - content: ""; - display: inline-block; - position: absolute; - width: 16px; - height: 16px; - top:0; - left: 0; - margin-left: -.8rem; - transition: border 0.05s ease-in-out, color 0.05s ease-in-out; - } +.d-check-box { + label { + &.red { + color: #ffcaca; } - input[type=checkbox]:checked + label::after{ - content: ""; - display: inline-block; - position: absolute; - top: 1px; - left: -1px; - width: 5px; - height: 8px; - border: 2px solid #697C8F; - border-left: none; - border-top: none; - transform: translate(7.75px,4.5px) rotate(45deg); - -ms-transform: translate(7.75px,4.5px) rotate(45deg); + &::before { + cursor: pointer; + content: ''; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + top: 2px; + left: 0; + margin-left: -12px; + border: 1px solid #d6d6d7; + background-color: transparent; + transition: + border 0.15s ease-in-out, + color 0.15s ease-in-out; } - &.pop{ - input[type=checkbox]:checked + label::after{ - border-color: #fff; - } + &:after { + cursor: pointer; + content: ''; + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + top: 0; + left: 0; + margin-left: -0.8rem; + transition: + border 0.05s ease-in-out, + color 0.05s ease-in-out; } + } + input[type='checkbox']:checked + label::after { + content: ''; + display: inline-block; + position: absolute; + top: 1px; + left: -1px; + width: 5px; + height: 8px; + border: 2px solid #697c8f; + border-left: none; + border-top: none; + transform: translate(7.75px, 4.5px) rotate(45deg); + -ms-transform: translate(7.75px, 4.5px) rotate(45deg); + } + &.pop { + input[type='checkbox']:checked + label::after { + border-color: #fff; + } + &.no-text { + label { + padding-left: 0; + } + } + } + &.sel { + input[type='checkbox']:checked + label { + color: #d7c863; + } + input[type='checkbox']:checked + label::before, + input[type='checkbox']:checked + label::after { + border-color: #d7c863; + } + } } // date-picker -.date-picker{ - svg{display: none;} - .react-datepicker-wrapper{ - width: 100%; - } - input[type=text]{ - display: block; - width: 100%; - height: 30px; - padding: 0 34px 0 10px; - border-radius: 2px; - border: 1px solid #eee; - font-size: 13px; - color: #45576F; - font-weight: normal; - font-family: 'Noto Sans JP', sans-serif; - background: #fff url(../../public/static/images/common/datepicker.svg) calc(100% - 11px) center no-repeat; - background-size: 14px 15px; - cursor: pointer; - } -} \ No newline at end of file +.date-picker { + svg { + display: none; + } + .react-datepicker-wrapper { + width: 100%; + } + input[type='text'] { + display: block; + width: 100%; + height: 30px; + padding: 0 34px 0 10px; + border-radius: 2px; + border: 1px solid #eee; + font-size: 13px; + color: #45576f; + font-weight: normal; + font-family: 'Noto Sans JP', sans-serif; + background: #fff url(../../public/static/images/common/datepicker.svg) calc(100% - 11px) center no-repeat; + background-size: 14px 15px; + cursor: pointer; + } +} diff --git a/src/styles/_submodal.scss b/src/styles/_submodal.scss new file mode 100644 index 00000000..aa50dcdd --- /dev/null +++ b/src/styles/_submodal.scss @@ -0,0 +1,198 @@ +.modal-popup { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + background: rgba(0, 0, 0, 0.75); + z-index: 110000; + .modal-dialog { + position: relative; + display: flex; + align-items: center; + min-height: calc(100% - (1.5rem * 2)); + width: 680px; + z-index: 200000; + margin: 1.5rem auto; + pointer-events: none; + &.middle { + width: 800px; + } + &.big { + width: 1000px; + } + .modal-content { + flex: 1; + position: relative; + background-clip: padding-box; + background-color: transparent; + outline: 0 none; + pointer-events: auto; + border-radius: 4px; + .modal-header { + display: flex; + align-items: center; + padding: 10px 24px; + background-color: #7992ba; + border-radius: 4px 4px 0px 0px; + // overflow: hidden; + h1.title { + font-size: 13px; + color: $pop-color; + font-weight: 700; + } + .modal-close { + margin-left: auto; + color: transparent; + font-size: 0; + width: 10px; + height: 10px; + background: url(../../public/static/images/canvas/modal_close.svg) no-repeat center; + } + } + .modal-body { + padding: 30px; + background-color: #fff; + border-radius: 0px 0px 4px 4px; + .modal-body-inner { + margin-bottom: 20px; + &.border { + padding-bottom: 20px; + border-bottom: 1px solid #ecf0f4; + } + } + .footer-btn-wrap { + display: flex; + align-items: center; + justify-content: flex-end; + } + } + } + } +} + +// modal-contents + +// 비밀번호 변경 +.change-password-guide { + span { + display: block; + margin-bottom: 5px; + font-size: 13px; + font-weight: 400; + color: #101010; + &:last-child { + margin-bottom: 0; + } + } +} + +.change-password-box { + padding: 30px; + border-radius: 4px; + background: #f4f4f7; + margin-bottom: 20px; + .change-password-tit { + .tit-b { + font-size: 13px; + font-weight: 500; + color: #344356; + } + .tit-s { + font-size: 12px; + font-weight: 400; + color: #898989; + } + } + .change-password-input { + width: 100%; + .change-password { + width: 100%; + height: 45px; + border-radius: 4px; + border: 1px solid #e9e9e9; + background-color: #fff; + padding: 0 10px; + font-size: 12px; + color: #364864; + font-family: 'Noto Sans JP', sans-serif; + &::placeholder { + font-size: 12px; + } + } + } + .table-item-th { + width: 145px; + } +} +.form-table { + display: table; + table-layout: auto; + width: 100%; + .table-item { + display: table-row; + .table-item-th, + .table-item-td { + display: table-cell; + vertical-align: middle; + padding-bottom: 10px; + } + &:last-child { + .table-item-th, + .table-item-td { + padding-bottom: 0; + } + } + .table-item-td { + padding-left: 10px; + } + } +} + +// 주소찾기 팝업 +.address-input-wrap { + position: relative; + height: 45px; + padding: 0 40px 0 15px; + border-radius: 4px; + border: 1px solid #e9e9e9; + background: #fff; + margin-bottom: 20px; + input { + width: 100%; + height: 100%; + font-size: 13px; + font-weight: 400; + font-family: 'Noto Sans JP' sans-serif; + color: #868686; + &::placeholder { + color: #aeaeae; + font-size: 13px; + font-weight: 400; + } + } + .search-btn { + position: absolute; + top: 0; + right: 15px; + width: 21px; + height: 100%; + background: url(../../public/static/images/sub/address_search.svg) no-repeat center; + background-size: 21px 21px; + } +} + +// 설계의뢰 불러오기 +.design-request-table { + margin-bottom: 20px; +} +.design-request-grid { + .design-request-grid-tit { + font-size: 13px; + font-weight: 600; + color: #101010; + margin-bottom: 15px; + } +} diff --git a/src/styles/_table.scss b/src/styles/_table.scss index a87bfc5b..e6b46a7c 100644 --- a/src/styles/_table.scss +++ b/src/styles/_table.scss @@ -1,205 +1,281 @@ -@mixin flexbox(){ - display: flex; - align-items: center; +@mixin flexbox() { + display: flex; + align-items: center; } -table{ - .overflow-lab{ +table { + .overflow-lab { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .al-l { + text-align: left !important; + } +} + +.flx-box { + @include flexbox; +} + +.common-table { + table { + table-layout: fixed; + border: 1px solid #ecf0f4; + border-radius: 3px; + border-collapse: collapse; + tbody { + th { + font-size: 13px; + font-weight: 500; + color: #344356; + padding: 14px 12px; + border: 1px solid #ecf0f4; + background-color: #f7f9fa; + vertical-align: middle; + } + td { + padding: 9px; + border: 1px solid #ecf0f4; + font-size: 13px; + font-weight: 400; + color: #45576f; + vertical-align: middle; + .radio-wrap { + flex: none; + @include flexbox; + } + .form-flex-wrap { + @include flexbox; + } + .date-picker-wrap { + width: 100%; + @include flexbox; + span { + margin: 0 4px; + } + } + } + } + } + &.bt-able { + margin-bottom: 30px; + } +} + +.infomation-table { + table { + border-top: 1px solid #dee3ea; + border-bottom: 1px solid #dee3ea; + border-collapse: collapse; + tbody { + tr { + th { + font-size: 13px; + color: #344356; + font-weight: 500; + padding: 18px 0; + border-bottom: 1px solid #f4f4f7; + .title { + margin-right: 8px; + } + } + td { + padding: 0 0 0 15px; + border-bottom: 1px solid #f4f4f7; + + .guide { + font-size: 13px; + color: #697c8f; + font-weight: normal; + margin-left: 15px; + margin-bottom: 0; + } + span { + font-size: 13px; + color: #697c8f; + font-weight: normal; + } + } + &:last-child { + th, + td { + border-bottom: none; + } + } + } + } + } + .tooltips { + display: block; + width: 14px; + height: 14px; + display: inline-block; + background: url(../../public/static/images/sub/tooltips.svg) no-repeat center; + background-size: cover; + cursor: pointer; + } +} + +.module-table { + table { + table-layout: fixed; + border-collapse: collapse; + thead { + display: table; + table-layout: fixed; + width: 100%; + th { + padding: 13px 0; + font-size: 13px; + color: #344356; + font-weight: 500; + border-bottom: 2px solid #e0e5eb; + text-align: center; + } + } + tbody { + display: block; + overflow-y: auto; + tr { + display: table; + table-layout: fixed; + width: 100%; + border: 1px solid #ecf0f4; + td { + padding: 10px 0px; + font-size: 13px; + color: #45576f; + font-weight: 400; + text-align: center; + } + } + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: #c1ccd7; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } + } + &.small { + tbody { + height: 120px; + } + } + &.big { + td, + th { + &:nth-child(2) { + width: 121px; + } + } + tbody { + height: 160px; + td { + padding: 10px 20px; + } + } + } + } +} + +.roof-module-table { + table { + border-collapse: collapse; + thead { + th { + height: 40px; + padding: 0px 10px; + font-size: 12px; + line-height: 1.1; + color: #fff; + font-weight: 500; + border: 1px solid #505050; + vertical-align: middle; + background-color: rgba(255, 255, 255, 0.05); + text-align: center; + word-break: keep-all; + .d-check-box { + opacity: 0.5; + } + } + } + tbody { + tr { + cursor: pointer; + &.on { + background-color: #272727; + } + } + td { + height: 40px; + vertical-align: middle; + font-size: 12px; + color: #fff; + font-weight: 400; + border: 1px solid #505050; + padding: 0 10px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; + .warning { + color: PCSオプションマスター; + } + .color-wrap { + display: flex; + align-items: center; + .color-box { + width: 14px; + height: 14px; + margin-right: 8px; + } + .name { + width: 0; + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + } + } } - .al-l{ - text-align: left !important; - } -} - -.common-table{ - table{ + } + &.overflow-y { + table { + table-layout: fixed; + border-collapse: collapse; + thead { + display: table; table-layout: fixed; - border: 1px solid #ECF0F4; - border-radius: 3px; - border-collapse:collapse; - tbody{ - th{ - font-size: 13px; - font-weight: 500; - color: #344356; - padding: 14px 12px; - border: 1px solid #ECF0F4 ; - background-color: #F7F9FA; - vertical-align: middle; - } - td{ - padding: 9px; - border: 1px solid #ECF0F4 ; - font-size: 13px; - font-weight: 400; - color: #45576F; - vertical-align: middle; - .radio-wrap{ - flex: none; - @include flexbox; - } - .form-flex-wrap{ - @include flexbox; - } - .date-picker-wrap{ - width: 100%; - @include flexbox; - span{ - margin: 0 4px; - } - } - } - } - } - &.bt-able{ - margin-bottom: 30px; - } -} - -.infomation-table{ - table{ - border-top: 1px solid #DEE3EA; - border-bottom: 1px solid #DEE3EA; - border-collapse:collapse; - tbody{ - tr{ - th{ - font-size: 13px; - color: #344356; - font-weight: 500; - padding: 18px 0; - border-bottom: 1px solid #F4F4F7; - .title{ - margin-right: 8px; - } - } - td{ - padding: 0 0 0 15px; - border-bottom: 1px solid #F4F4F7; - - .guide{ - font-size: 13px; - color: #697C8F; - font-weight: normal; - margin-left: 15px; - } - span{ - font-size: 13px; - color: #697C8F; - font-weight: normal; - } - } - &:last-child{ - th,td{border-bottom: none;} - } - } - } - .flx-box{ - @include flexbox; - } - } - .tooltips{ + width: 100%; + border-collapse: collapse; + } + tbody { display: block; - width: 14px; - height: 14px; - display: inline-block; - background: url(../../public/static/images/sub/tooltips.svg)no-repeat center; - background-size: cover; - cursor: pointer; + max-height: 81px; + overflow-y: auto; + tr { + display: table; + table-layout: fixed; + width: 100%; + border-collapse: collapse; + margin-top: -1px; + } + &::-webkit-scrollbar { + width: 2px; + background-color: rgba(255, 255, 255, 0.05); + } + &::-webkit-scrollbar-thumb { + background-color: #c1ccd7; + } + &::-webkit-scrollbar-track { + background-color: rgba(255, 255, 255, 0.05); + } + } } + } } - -.module-table{ - table{ - table-layout: fixed; - border-collapse: collapse; - thead{ - display: table; - table-layout: fixed; - width: 100%; - th{ - padding: 13px 0; - font-size: 13px; - color: #344356; - font-weight: 500; - border-bottom: 2px solid #E0E5EB; - text-align: center; - } - } - tbody{ - display: block; - overflow-y: auto; - tr{ - display: table; - table-layout: fixed; - width: 100%; - border: 1px solid #ECF0F4; - td{ - padding: 10px 0px; - font-size: 13px; - color: #45576F; - font-weight: 400; - text-align: center; - } - } - &::-webkit-scrollbar { - width: 4px; - background-color: transparent; - } - &::-webkit-scrollbar-thumb { - background-color: #C1CCD7; - } - &::-webkit-scrollbar-track { - background-color: transparent; - } - } - &.small{ - tbody{height: 120px;} - } - &.big{ - td, - th{ - &:nth-child(2){ - width: 121px; - } - } - tbody{ - height: 160px; - td{ - padding: 10px 20px; - } - } - } - } -} - -.roof-module-table{ - table{ - border-collapse: collapse; - thead{ - th{ - height: 40px; - padding: 0 10px; - font-size: 12px; - color: #fff; - font-weight: 500; - border: 1px solid #505050; - vertical-align: middle; - background-color: rgba(255, 255, 255, 0.05); - text-align: center; - word-break: keep-all; - } - } - tbody{ - td{ - font-size: 12px; - color: #fff; - font-weight: 400; - border: 1px solid #505050; - } - } - } -} \ No newline at end of file diff --git a/src/styles/contents.scss b/src/styles/contents.scss index 38e7ff83..08c322e9 100644 --- a/src/styles/contents.scss +++ b/src/styles/contents.scss @@ -1,4 +1,5 @@ @import '_contents.scss'; @import '_modal.scss'; +@import '_submodal.scss'; @import '_table.scss'; -@import '_canvasside.scss'; \ No newline at end of file +@import '_canvasside.scss'; From 7214e5bb5907efad56f403b6ba7b3c0070ae6906 Mon Sep 17 00:00:00 2001 From: basssy Date: Fri, 11 Oct 2024 12:58:35 +0900 Subject: [PATCH 17/27] =?UTF-8?q?=EB=A9=94=EC=9D=B8=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Main.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Main.jsx b/src/components/Main.jsx index be72673f..69c90071 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -112,7 +112,7 @@ export default function MainPage() { return ( <> - {(sessionState.pwdInitYn === 'Y' && ( + {(sessionState?.pwdInitYn !== 'N' && ( <>
From e2e1c63885c71a67625546fb0105537e222294e4 Mon Sep 17 00:00:00 2001 From: minsik Date: Fri, 11 Oct 2024 14:41:39 +0900 Subject: [PATCH 18/27] =?UTF-8?q?-=20=EC=A7=80=EB=B6=95=EB=A9=B4=20?= =?UTF-8?q?=ED=95=A0=EB=8B=B9=20=EB=AA=A8=EB=8B=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasMenu.jsx | 2 + src/components/floor-plan/FloorPlan.jsx | 4 + src/components/floor-plan/MenuDepth01.jsx | 5 +- .../roofAllocation/RoofAllocationSetting.jsx | 222 ++++++++++++++++++ src/locales/ja.json | 6 + src/locales/ko.json | 6 + 6 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx index eceef021..d8b7510c 100644 --- a/src/components/floor-plan/CanvasMenu.jsx +++ b/src/components/floor-plan/CanvasMenu.jsx @@ -46,6 +46,7 @@ export default function CanvasMenu(props) { setShowEavesGableEditModal, setShowMovementModal, setShowWallLineOffsetSettingModal, + setShowRoofAllocationSettingModal, } = props const [menuNumber, setMenuNumber] = useState(null) @@ -99,6 +100,7 @@ export default function CanvasMenu(props) { setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, + setShowRoofAllocationSettingModal, setShowObjectSettingModal, type, } diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx index 9e6a541e..2902fcf0 100644 --- a/src/components/floor-plan/FloorPlan.jsx +++ b/src/components/floor-plan/FloorPlan.jsx @@ -25,6 +25,7 @@ import ObjectSetting from '@/components/floor-plan/modal/object/ObjectSetting' import PlacementSurfaceSetting from '@/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting' import RoofShapePassivitySetting from '@/components/floor-plan/modal/roofShape/RoofShapePassivitySetting' import MovementSetting from '@/components/floor-plan/modal/movement/MovementSetting' +import RoofAllocationSetting from '@/components/floor-plan/modal/roofAllocation/RoofAllocationSetting' export default function FloorPlan() { const [showCanvasSettingModal, setShowCanvasSettingModal] = useState(false) @@ -41,6 +42,7 @@ export default function FloorPlan() { const [showEavesGableEditModal, setShowEavesGableEditModal] = useState(false) const [showMovementModal, setShowMovementModal] = useState(false) const [showWallLineOffsetSettingModal, setShowWallLineOffsetSettingModal] = useState(false) + const [showRoofAllocationSettingModal, setShowRoofAllocationSettingModal] = useState(false) const globalLocaleState = useRecoilValue(globalLocaleStore) const { get } = useAxios(globalLocaleState) @@ -78,6 +80,7 @@ export default function FloorPlan() { setShowEavesGableEditModal, setShowMovementModal, setShowWallLineOffsetSettingModal, + setShowRoofAllocationSettingModal, } useEffect(() => { @@ -147,6 +150,7 @@ export default function FloorPlan() { {showPlaceShapeDrawingModal && } {showEavesGableEditModal && } {showMovementModal && } + {showRoofAllocationSettingModal && } {showWallLineOffsetSettingModal && } {showObjectSettingModal && } {showPlacementSurfaceSettingModal && } diff --git a/src/components/floor-plan/MenuDepth01.jsx b/src/components/floor-plan/MenuDepth01.jsx index 9ce635ef..8cb10b38 100644 --- a/src/components/floor-plan/MenuDepth01.jsx +++ b/src/components/floor-plan/MenuDepth01.jsx @@ -20,6 +20,7 @@ export default function MenuDepth01(props) { setShowPlacementSurfaceSettingModal, setShowPlaceShapeDrawingModal, setShowWallLineOffsetSettingModal, + setShowRoofAllocationSettingModal, setShowObjectSettingModal, } = props const { getMessage } = useMessage() @@ -38,6 +39,7 @@ export default function MenuDepth01(props) { setShowEavesGableEditModal(id === 4) setShowMovementModal(id === 5) setShowWallLineOffsetSettingModal(id === 6) + setShowRoofAllocationSettingModal(id === 7) setShowPlaceShapeDrawingModal(false) } @@ -49,7 +51,8 @@ export default function MenuDepth01(props) { setShowEavesGableEditModal(false) setShowMovementModal(false) setShowWallLineOffsetSettingModal(false) - + setShowRoofAllocationSettingModal(false) + setShowSlopeSettingModal(id === 0) setShowPlaceShapeDrawingModal(id === 1) setShowPlacementSurfaceSettingModal(id === 2) diff --git a/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx b/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx new file mode 100644 index 00000000..d42f7fb2 --- /dev/null +++ b/src/components/floor-plan/modal/roofAllocation/RoofAllocationSetting.jsx @@ -0,0 +1,222 @@ +import { useMessage } from '@/hooks/useMessage' +import WithDraggable from '@/components/common/draggable/WithDraggable' +import { useState } from 'react' +import QSelectBox from '@/components/common/select/QSelectBox' + +export default function RoofAllocationSetting({ setShowRoofAllocationSettingModal }) { + const { getMessage } = useMessage() + const [selectedRoofMaterial, setSelectedRoofMaterial] = useState(null) + const [values, setValues] = useState([ + { + id: '1', + type: 'A', + roofMaterial: { name: '기와1' }, + width: { name: '200' }, + length: { name: '250' }, + rafter: { name: '300' }, + alignType: 'stairs', + }, + ]) + + const roofMaterials = [ + { + id: 'A', + name: '기와1', + type: 'A', + width: '200', + length: '200', + alignType: 'parallel', + }, + { + id: 'B', + name: '기와2', + type: 'B', + rafter: '200', + alignType: 'parallel', + }, + { + id: 'C', + name: '기와3', + type: 'C', + hajebichi: '200', + alignType: 'stairs', + }, + { + id: 'D', + name: '기와4', + type: 'D', + length: '200', + alignType: 'stairs', + }, + ] + const widths = [ + { name: '200', id: 'q' }, + { name: '250', id: 'q1' }, + { name: '300', id: 'q2' }, + ] + const lengths = [ + { name: '200', id: 'w' }, + { name: '250', id: 'w1' }, + { name: '300', id: 'w2' }, + ] + const rafters = [ + { name: '200', id: 'e' }, + { name: '250', id: 'e1' }, + { name: '300', id: 'e2' }, + ] + + const onAddRoofMaterial = () => { + setValues([...values, selectedRoofMaterial]) + } + + const onDeleteRoofMaterial = (id) => { + setValues(values.filter((value) => value.id !== id)) + } + + return ( + +
+
+

{getMessage('plan.menu.estimate.roof.alloc')}

+ +
+
+
{getMessage('modal.roof.alloc.info')}
+
+ {getMessage('modal.roof.alloc.select.roof.material')} +
+ setSelectedRoofMaterial(e)} /> +
+ +
+
+ {values.map((value, index) => ( +
+
+ + +
+
+
+
+
+ +
+ {index === 0 && 基本屋根材} + {index !== 0 && } +
+
+
+ {value.type === 'A' ? ( + <> +
+ W +
+ +
+
+
+ L +
+ +
+
+
+ {getMessage('modal.placement.initial.setting.rafter')} +
+ +
+
+ + ) : value.type === 'B' ? ( + <> +
+ {getMessage('hajebichi')} +
+ +
+
+
+ {getMessage('modal.placement.initial.setting.rafter')} +
+ +
+
+ + ) : value.type === 'C' ? ( + <> +
+ {getMessage('hajebichi')} +
+ +
+
+ + ) : value.type === 'D' ? ( + <> +
+ L +
+ +
+
+
+ {getMessage('modal.placement.initial.setting.rafter')} +
+ +
+
+ + ) : ( + '' + )} +
+
+
+ + +
+
+
+
+ ))} +
+
+ +
+
+
+
+ ) +} diff --git a/src/locales/ja.json b/src/locales/ja.json index fb925f64..46891fce 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -84,6 +84,11 @@ "plan.menu.module.circuit.setting.plan.orientation": "図面方位の適用", "plan.menu.estimate": "見積", "plan.menu.estimate.roof.alloc": "屋根面の割り当て", + "modal.roof.alloc.info": "※配置面初期設定で保存した[基本屋根材]を変更したり、屋根材を追加して割り当てることができます。", + "modal.roof.alloc.select.roof.material": "屋根材の選択", + "modal.roof.alloc.select.parallel": "並列式", + "modal.roof.alloc.select.stairs": "カスケード", + "modal.roof.alloc.apply": "選択した屋根材として割り当て", "plan.menu.estimate.save": "保存", "plan.menu.estimate.reset": "初期化", "plan.menu.estimate.copy": "コピー", @@ -120,6 +125,7 @@ "modal.grid.copy.length": "長さ", "modal.grid.copy.save": "保存", "modal.common.save": "保存", + "modal.common.add": "追加", "modal.canvas.setting.font.plan.edit": "フォントとサイズの変更", "modal.canvas.setting.font.plan.edit.word": "文字フォントの変更", "modal.canvas.setting.font.plan.edit.flow": "フロー方向フォントの変更", diff --git a/src/locales/ko.json b/src/locales/ko.json index cf63e56c..b9616eb8 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -87,6 +87,11 @@ "plan.menu.module.circuit.setting.plan.orientation": "도면 방위 적용", "plan.menu.estimate": "견적서", "plan.menu.estimate.roof.alloc": "지붕면 할당", + "modal.roof.alloc.info": "※ 배치면 초기설정에서 저장한 [기본 지붕재]를 변경하거나, 지붕재를 추가하여 할당할 수 있습니다.", + "modal.roof.alloc.select.roof.material": "지붕재 선택", + "modal.roof.alloc.select.parallel": "병렬식", + "modal.roof.alloc.select.stairs": "계단식", + "modal.roof.alloc.apply": "선택한 지붕재로 할당", "plan.menu.estimate.save": "저장", "plan.menu.estimate.reset": "초기화", "plan.menu.estimate.copy": "복사", @@ -123,6 +128,7 @@ "modal.grid.copy.length": "길이", "modal.grid.copy.save": "저장", "modal.common.save": "저장", + "modal.common.add": "추가", "modal.canvas.setting.font.plan.edit": "글꼴 및 크기 변경", "modal.canvas.setting.font.plan.edit.word": "문자 글꼴 변경", "modal.canvas.setting.font.plan.edit.flow": "흐름 방향 글꼴 변경", From a82dafaa064024ecc119df142f6f17e17fabe57d Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 11 Oct 2024 15:04:22 +0900 Subject: [PATCH 19/27] =?UTF-8?q?=EB=A9=B4=ED=98=95=EC=83=81=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=20=EC=9E=91=EC=97=85=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../placementSurface/PlacementSurface.jsx | 46 +- .../PlacementSurfaceSetting.jsx | 167 ++--- src/hooks/surface/useSurfaceShapeBatch.js | 633 ++++++++++++++++++ src/locales/ja.json | 9 +- src/locales/ko.json | 9 +- 5 files changed, 779 insertions(+), 85 deletions(-) create mode 100644 src/hooks/surface/useSurfaceShapeBatch.js diff --git a/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx b/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx index 9ac285c0..d6d08675 100644 --- a/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx +++ b/src/components/floor-plan/modal/placementSurface/PlacementSurface.jsx @@ -1,9 +1,14 @@ import Image from 'next/image' import { useMessage } from '@/hooks/useMessage' +import { forwardRef, useState } from 'react' -export default function PlacementSurface(props) { +const PlacementSurface = forwardRef((props, refs) => { const { getMessage } = useMessage() const { id, lines, info, rotate, xInversion, yInversion } = props + let { length1, length2, length3, length4, length5, lengthetc, azimuth } = refs + + const [azimuthDirection, setAzimuthDirection] = useState(azimuth.current) + const num = ['①', '②', '③', '④', '⑤'] const getImageUrl = () => { if (xInversion && !yInversion) { @@ -24,6 +29,12 @@ export default function PlacementSurface(props) { return `/static/images/canvas/shape/${rotate !== 0 ? Math.abs(rotate * 90) + 'deg' : 'normal'}/plane_tab${id < 10 ? '0' + id : id}.svg` } + + const azimuthButton = (direction, e) => { + setAzimuthDirection(direction) + azimuth.current = direction + } + return ( <>
@@ -36,14 +47,31 @@ export default function PlacementSurface(props) {
{lines?.map((line, index) => ( -
+
{line.isDiagonal ? getMessage('modal.placement.surface.setting.diagonal.length') : num[index]}
- +
mm
@@ -62,10 +90,10 @@ export default function PlacementSurface(props) { {getMessage('commons.east')} {getMessage('commons.south')} {getMessage('commons.west')} - - - - + + + +
@@ -73,4 +101,6 @@ export default function PlacementSurface(props) { {info &&
{info}
} ) -} +}) + +export default PlacementSurface diff --git a/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx index 06af2237..d2c3022a 100644 --- a/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx +++ b/src/components/floor-plan/modal/placementSurface/PlacementSurfaceSetting.jsx @@ -1,15 +1,30 @@ import { useMessage } from '@/hooks/useMessage' import WithDraggable from '@/components/common/draggable/WithDraggable' -import { useEffect, useState } from 'react' +import { useEffect, useState, useRef } from 'react' import Image from 'next/image' import PlacementSurface from '@/components/floor-plan/modal/placementSurface/PlacementSurface' +import { useSurfaceShapeBatch } from '@/hooks/surface/useSurfaceShapeBatch' export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSettingModal }) { const { getMessage } = useMessage() + const [selectedType, setSelectedType] = useState() const [rotate, setRotate] = useState(0) const [xInversion, setXInversion] = useState(false) const [yInversion, setYInversion] = useState(false) + + const { applySurfaceShape } = useSurfaceShapeBatch() + + const surfaceRefs = { + length1: useRef(null), + length2: useRef(null), + length3: useRef(null), + length4: useRef(null), + length5: useRef(null), + lengthetc: useRef(null), + azimuth: useRef('down'), + } + /* type * a: line 2 * b: line 2 + diagonal 1 @@ -21,11 +36,11 @@ export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSetting { id: 1, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, { isDiagonal: true, - value: 3500, + value: 0, }, ], info: getMessage('modal.placement.surface.setting.info'), @@ -33,151 +48,151 @@ export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSetting { id: 2, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 3, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 4, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 5, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 6, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], lineAmount: 3, }, { id: 7, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 8, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 9, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 10, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 11, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 12, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 13, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 14, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 15, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 16, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 17, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, { id: 18, lines: [ - { isDiagonal: false, value: 4500 }, - { isDiagonal: false, value: 2600 }, - { isDiagonal: false, value: 2600 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, + { isDiagonal: false, value: 0 }, ], }, ] @@ -200,11 +215,11 @@ export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSetting return `rotate(${90 * rotate}deg)` } - const onClick = () => { - if (xInversion !== yInversion) { - } else { - setRotate((rotate + 1) % 4) - } + const applySurfaces = () => { + surfaceRefs.xInversion = xInversion //좌우반전 + surfaceRefs.yInversion = yInversion //상하반전 + surfaceRefs.rotate = rotate * 90 //앵글 + applySurfaceShape(surfaceRefs, selectedType, setShowPlacementSurfaceSettingModal) } useEffect(() => { @@ -245,9 +260,11 @@ export default function PlacementSurfaceSetting({ setShowPlacementSurfaceSetting
- +
- +
diff --git a/src/hooks/surface/useSurfaceShapeBatch.js b/src/hooks/surface/useSurfaceShapeBatch.js new file mode 100644 index 00000000..e612a463 --- /dev/null +++ b/src/hooks/surface/useSurfaceShapeBatch.js @@ -0,0 +1,633 @@ +'use client' + +import { useEffect, useRef, useState } from 'react' +import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' +import { canvasState } from '@/store/canvasAtom' +import { MENU } from '@/common/common' +import { getIntersectionPoint } from '@/util/canvas-util' +import { degreesToRadians } from '@turf/turf' +import { QPolygon } from '@/components/fabric/QPolygon' +import { fabric } from 'fabric' +import { useSwal } from '@/hooks/useSwal' +import { useMessage } from '@/hooks/useMessage' + +export function useSurfaceShapeBatch() { + const { getMessage } = useMessage() + + const canvas = useRecoilValue(canvasState) + const { swalFire } = useSwal() + + const applySurfaceShape = (surfaceRefs, selectedType, setShowPlacementSurfaceSettingModal) => { + let length1, length2, length3, length4, length5 + const surfaceId = selectedType?.id + const azimuth = surfaceRefs.azimuth.current + + if (surfaceId === 1) { + length1 = surfaceRefs.length1.current.value + length2 = surfaceRefs.length2.current.value + length3 = surfaceRefs.lengthetc.current.value //대각선 + } else if ([2, 4].includes(surfaceId)) { + length1 = surfaceRefs.length1.current.value + length2 = surfaceRefs.length2.current.value + } else if ([3, 5, 6, 15, 18].includes(surfaceId)) { + length1 = surfaceRefs.length1.current.value + length2 = surfaceRefs.length2.current.value + length3 = surfaceRefs.length3.current.value + } else if ([8, 12, 13, 16, 17].includes(surfaceId)) { + length1 = surfaceRefs.length1.current.value + length2 = surfaceRefs.length2.current.value + length3 = surfaceRefs.length3.current.value + length4 = surfaceRefs.length4.current.value + } else if ([7, 9, 10, 11, 14].includes(surfaceId)) { + length1 = surfaceRefs.length1.current.value + length2 = surfaceRefs.length2.current.value + length3 = surfaceRefs.length3.current.value + length4 = surfaceRefs.length4.current.value + length5 = surfaceRefs.length5.current.value + } + + length1 = parseInt(length1 === undefined ? 0 : length1 / 10) + length2 = parseInt(length2 === undefined ? 0 : length2 / 10) + length3 = parseInt(length3 === undefined ? 0 : length3 / 10) + length4 = parseInt(length4 === undefined ? 0 : length4 / 10) + length5 = parseInt(length5 === undefined ? 0 : length5 / 10) + + let isDrawing = true + let obj = null + let points = [] + if (checkSurfaceShape(surfaceId, { length1, length2, length3, length4, length5 })) { + setShowPlacementSurfaceSettingModal(false) + canvas?.on('mouse:move', (e) => { + console.log('asdfasdfasdfasdfasdfsdfasdfsdf') + + if (!isDrawing) { + return + } + const pointer = canvas?.getPointer(e.e) + canvas?.remove(...canvas?.getObjects().filter((obj) => obj.name === MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH_TEMP)) + points = getSurfaceShape(surfaceId, pointer, { length1, length2, length3, length4, length5 }) + + const options = { + fill: 'transparent', + stroke: 'black', + strokeWidth: 1, + strokeDasharray: [10, 4], + fontSize: 12, + selectable: true, + lockMovementX: true, // X 축 이동 잠금 + lockMovementY: true, // Y 축 이동 잠금 + lockRotation: true, // 회전 잠금 + lockScalingX: true, // X 축 크기 조정 잠금 + lockScalingY: true, // Y 축 크기 조정 잠금 + name: MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH_TEMP, + flipX: surfaceRefs.yInversion, + flipY: surfaceRefs.xInversion, + angle: surfaceRefs.rotate, + originX: 'center', + originY: 'center', + } + + obj = new QPolygon(points, options) + obj.setCoords() //좌표 변경 적용 + + canvas?.add(obj) + + //각도 추가 + let originAngle = 0 //기본 남쪽 + let direction = 'south' + if (azimuth === 'left') { + //서 + originAngle = 90 + direction = 'west' + } else if (azimuth === 'right') { + //동 + originAngle = 270 + direction = 'east' + } else if (azimuth === 'up') { + //북 + originAngle = 180 + direction = 'north' + } + + obj.set({ direction: direction }) + obj.set({ originAngle: originAngle }) + + // setCurrentPattern(obj) + canvas?.renderAll() + }) + + canvas?.on('mouse:down', (e) => { + isDrawing = false + obj.set('name', MENU.BATCH_CANVAS.SURFACE_SHAPE_BATCH) + canvas?.off('mouse:down') + canvas.off('mouse:move') + setSurfaceShapePattern(obj) + setShowPlacementSurfaceSettingModal(true) + }) + } + } + + //면형상 입력 validate + const checkSurfaceShape = (surfaceId, lengths) => { + const { length1, length2, length3, length4, length5 } = lengths + let check = true + + if (surfaceId === 1) { + if (length1 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + if (length2 === 0) { + if (length3 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + } + } else if ([2, 4].includes(surfaceId)) { + if (length1 === 0 || length2 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + } else if ([3, 5, 6, 15, 18].includes(surfaceId)) { + if (length1 === 0 || length2 === 0 || length3 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + if (surfaceId === 3 && length3 > length1) { + swalFire({ text: getMessage('surface.shape.validate.size.1to3'), icon: 'error' }) + check = false + } + + if (surfaceId === 5 || surfaceId === 15) { + if (length3 >= length2) { + swalFire({ text: getMessage('surface.shape.validate.size.2to3'), icon: 'error' }) + check = false + } + } + if (surfaceId === 18) { + if (length1 >= length2) { + swalFire({ text: getMessage('surface.shape.validate.size.1to2'), icon: 'error' }) + check = false + } + if (length4 >= length3) { + swalFire({ text: getMessage('surface.shape.validate.size.3to4'), icon: 'error' }) + check = false + } + } + } else if ([8, 12, 13, 16, 17].includes(surfaceId)) { + if (length1 === 0 || length2 === 0 || length3 === 0 || length4 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + + if (surfaceId === 8) { + if (length2 >= length1) { + swalFire({ text: getMessage('surface.shape.validate.size.1to2'), icon: 'error' }) + check = false + } + if (length4 >= length3) { + swalFire({ text: getMessage('surface.shape.validate.size.3to4'), icon: 'error' }) + check = false + } + } + + if (surfaceId === 12 || surfaceId === 13 || surfaceId === 16 || surfaceId === 17) { + if (length2 >= length1) { + swalFire({ text: getMessage('surface.shape.validate.size.1to2'), icon: 'error' }) + check = false + } + + if (length4 >= length3) { + swalFire({ text: getMessage('surface.shape.validate.size.1to2'), icon: 'error' }) + check = false + } + } + } else if ([7, 9, 10, 11, 14].includes(surfaceId)) { + if (length1 === 0 || length2 === 0 || length3 === 0 || length4 === 0 || length5 === 0) { + swalFire({ text: getMessage('surface.shape.validate.size'), icon: 'error' }) + check = false + } + if (surfaceId === 9 || surfaceId === 10 || surfaceId === 11) { + if (length2 + length3 >= length1) { + swalFire({ text: getMessage('surface.shape.validate.size.1to23'), icon: 'error' }) + check = false + } + if (length5 >= length4) { + swalFire({ text: getMessage('surface.shape.validate.size.4to5'), icon: 'error' }) + check = false + } + } + + if (surfaceId === 14) { + if (length2 + length3 >= length1) { + swalFire({ text: getMessage('surface.shape.validate.size.1to23'), icon: 'error' }) + check = false + } + if (length5 >= length4) { + swalFire({ text: getMessage('surface.shape.validate.size.4to5'), icon: 'error' }) + check = false + } + } + } + return check + } + + //면형상 가져오기 + const getSurfaceShape = (surfaceId, pointer, lengths) => { + let points = [] + const { length1, length2, length3, length4, length5 } = lengths + + switch (surfaceId) { + case 1: { + let newLength2 = length2 + + if (length3 !== 0) { + newLength2 = Math.sqrt(length3 ** 2 - (length1 / 2) ** 2) + } + + points = [ + { x: pointer.x, y: pointer.y - parseInt(newLength2) / 2 }, + { x: pointer.x - parseInt(length1) / 2, y: pointer.y + parseInt(newLength2) / 2 }, + { x: pointer.x + parseInt(length1) / 2, y: pointer.y + parseInt(newLength2) / 2 }, + ] + + break + } + case 2: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y - length2 / 2 }, + { x: pointer.x - length1 / 2, y: pointer.y - length2 / 2 }, + ] + + break + } + case 3: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length3 / 2, y: pointer.y - length2 / 2 }, + { x: pointer.x - length3 / 2, y: pointer.y - length2 / 2 }, + ] + + break + } + case 4: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y - length2 / 2 }, + ] + + break + } + case 5: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y - length3 / 2 }, + { x: pointer.x - length1 / 2, y: pointer.y + length3 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length3 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length3 / 2 - length2 }, + ] + + break + } + case 6: { + const angleInRadians = Math.asin(length2 / length3) + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x - length1 / 2 + length3 * Math.cos(angleInRadians), y: pointer.y + length2 / 2 - length3 * Math.sin(angleInRadians) }, + { x: pointer.x + length1 / 2 + length3 * Math.cos(angleInRadians), y: pointer.y + length2 / 2 - length3 * Math.sin(angleInRadians) }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 / 2 }, + ] + + break + } + case 7: { + points = [ + { x: pointer.x - (length1 + length2 + length3) / 2, y: pointer.y - (length4 + length5) / 2 }, + { x: pointer.x - (length1 + length2 + length3) / 2, y: pointer.y + (length4 + length5) / 2 }, + { x: pointer.x - (length1 + length2 + length3) / 2 + length1, y: pointer.y + (length4 + length5) / 2 }, + { x: pointer.x - (length1 + length2 + length3) / 2 + length1, y: pointer.y + (length4 + length5) / 2 - length5 }, + { x: pointer.x - (length1 + length2 + length3) / 2 + length1 + length2, y: pointer.y + (length4 + length5) / 2 - length5 }, + { x: pointer.x - (length1 + length2 + length3) / 2 + length1 + length2, y: pointer.y + (length4 + length5) / 2 - length5 + length5 }, + { + x: pointer.x - (length1 + length2 + length3) / 2 + length1 + length2 + length3, + y: pointer.y + (length4 + length5) / 2 - length5 + length5, + }, + { + x: pointer.x - (length1 + length2 + length3) / 2 + length1 + length2 + length3, + y: pointer.y + (length4 + length5) / 2 - length5 + length5 - (length4 + length5), + }, + ] + + break + } + case 8: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 - length3 }, + { x: pointer.x - length1 / 2 + length1 - (length1 - length2), y: pointer.y + length4 / 2 - length3 }, + { x: pointer.x - length1 / 2 + length1 - (length1 - length2), y: pointer.y + length4 / 2 - length3 + (length3 - length4) }, + { x: pointer.x - length1 / 2 + length1 - (length1 - length2) - length2, y: pointer.y + length4 / 2 - length3 + (length3 - length4) }, + ] + + break + } + case 9: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 - length4 }, + { x: pointer.x - length1 / 2 + length1 - length3, y: pointer.y + length4 / 2 - length4 }, + { x: pointer.x - length1 / 2 + length1 - length3, y: pointer.y + length4 / 2 - length4 + (length4 - length5) }, + { x: pointer.x - length1 / 2 + length1 - length3 - length2, y: pointer.y + length4 / 2 - length4 + (length4 - length5) }, + ] + break + } + case 10: { + points = [ + { x: pointer.x + length1 / 2, y: pointer.y + length4 / 2 }, + { x: pointer.x + length1 / 2 - length1, y: pointer.y + length4 / 2 }, + { x: pointer.x + length1 / 2 - length1, y: pointer.y + length4 / 2 - length5 }, + { x: pointer.x + length1 / 2 - length1 + length2, y: pointer.y + length4 / 2 - length5 }, + { x: pointer.x + length1 / 2 - length1 + length2, y: pointer.y + length4 / 2 - length5 - (length4 - length5) }, + { x: pointer.x + length1 / 2 - length1 + length2 + length3, y: pointer.y + length4 / 2 - length5 - (length4 - length5) }, + ] + break + } + case 11: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 - length5 }, + { x: pointer.x - length1 / 2 + length1 - length2, y: pointer.y + length4 / 2 - length5 }, + { x: pointer.x - length1 / 2 + length1 - length2, y: pointer.y + length4 / 2 - length5 - (length4 - length5) }, + { x: pointer.x - length1 / 2 + length1 - length2 - length3, y: pointer.y + length4 / 2 - length5 - (length4 - length5) }, + ] + break + } + case 12: { + const leftHypotenuse = Math.sqrt(((length1 - length2) / 2) ** 2 + length3 ** 2) + const rightHypotenuse = (length4 / length3) * leftHypotenuse + + const leftAngle = Math.acos((length1 - length2) / 2 / leftHypotenuse) + + points = [ + { x: pointer.x - length1 / 2 + leftHypotenuse * Math.cos(leftAngle), y: pointer.y + length3 / 2 - leftHypotenuse * Math.sin(leftAngle) }, + { x: pointer.x - length1 / 2, y: pointer.y + length3 / 2 }, + { x: pointer.x + length1 / 2, y: pointer.y + length3 / 2 }, + { + x: pointer.x + length1 / 2 - rightHypotenuse * Math.cos(leftAngle), + y: pointer.y + length3 / 2 - rightHypotenuse * Math.sin(leftAngle), + }, + { + x: pointer.x + length1 / 2 - rightHypotenuse * Math.cos(leftAngle) - length2, + y: pointer.y + length3 / 2 - rightHypotenuse * Math.sin(leftAngle), + }, + ] + + break + } + case 13: { + const pointsArray = [ + { x: 0, y: 0 }, + { x: 0, y: 0 }, + { x: 0, y: 0 }, + { x: 0, y: 0 }, + { x: 0, y: 0 }, + ] + + const tmpPolygon = new QPolygon( + [ + { x: 0, y: length3 }, + { x: length1 - length2, y: length3 }, + { x: (length1 - length2) / 2, y: length3 - length3 }, + ], + { + fill: 'transparent', + stroke: 'black', //black + strokeWidth: 2, + selectable: true, + fontSize: 0, + }, + ) + + const coord = getIntersectionPoint(tmpPolygon.lines[1].startPoint, tmpPolygon.lines[2].startPoint, length3 - length4) + const scale = (length1 - length2) / coord.x + + tmpPolygon.set({ scaleX: scale }) + + pointsArray[0].x = 0 + pointsArray[0].y = length3 //바닥면부터 시작하게 + pointsArray[1].x = pointsArray[0].x + length1 + pointsArray[1].y = pointsArray[0].y + pointsArray[2].x = pointsArray[1].x + pointsArray[2].y = pointsArray[1].y - length4 + pointsArray[3].x = pointsArray[2].x - length2 + pointsArray[3].y = pointsArray[2].y + pointsArray[4].x = tmpPolygon.getCurrentPoints()[2].x + pointsArray[4].y = tmpPolygon.getCurrentPoints()[2].y + + points = [ + { + x: pointer.x - length1 / 2, + y: pointer.y + length4 / 2, + }, + { + x: pointer.x + length1 / 2, + y: pointer.y + length4 / 2, + }, + { + x: pointer.x + length1 / 2, + y: pointer.y - length4 / 2, + }, + { + x: pointer.x - (length2 - length1 / 2), + y: pointer.y - length4 / 2, + }, + { + x: pointer.x - length1 / 2 + pointsArray[4].x, + y: pointer.y - length3 + length4 / 2, + }, + ] + + break + } + case 14: { + points = [ + { x: pointer.x - length1 / 2 + length2, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2, y: pointer.y + length4 / 2 }, + { x: pointer.x - length1 / 2, y: pointer.y + length4 / 2 - length4 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 - length4 }, + { x: pointer.x - length1 / 2 + length1, y: pointer.y + length4 / 2 - length4 + length4 }, + { x: pointer.x - length1 / 2 + length1 - length3, y: pointer.y + length4 / 2 - length4 + length4 }, + { x: pointer.x - length1 / 2 + length2 + (length1 - length2 - length3) / 2, y: pointer.y + length4 / 2 - length4 + length5 }, + ] + break + } + + case 15: { + points = [ + { x: pointer.x - length1 / 2, y: pointer.y + length2 - length2 / 2 }, + { x: pointer.x - length1 / 2, y: pointer.y + length2 - length2 / 2 - length3 }, + { x: pointer.x, y: pointer.y + length2 - length2 / 2 - length3 - (length2 - length3) }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 - length2 / 2 - length3 }, + { x: pointer.x + length1 / 2, y: pointer.y + length2 - length2 / 2 - length3 + length3 }, + ] + break + } + + case 16: { + points = [ + { + x: pointer.x - length1 / 2, + y: pointer.y + length3 / 2, + }, + { + x: pointer.x - length1 / 2 + (length1 - length2) / 2, + y: pointer.y + length3 / 2 - (length3 - length4), + }, + { + x: pointer.x - length1 / 2 + (length1 - length2) / 2, + y: pointer.y + length3 / 2 - (length3 - length4) - length4, + }, + { + x: pointer.x - length1 / 2 + (length1 - length2) / 2 + length2, + y: pointer.y + length3 / 2 - (length3 - length4) - length4, + }, + { + x: pointer.x - length1 / 2 + (length1 - length2) / 2 + length2, + y: pointer.y + length3 / 2 - (length3 - length4) - length4 + length4, + }, + { + x: pointer.x - length1 / 2 + length1, + y: pointer.y + length3 / 2, + }, + ] + break + } + case 17: { + const angle = (Math.asin(length3 / length4) * 180) / Math.PI // 높이와 빗변으로 먼저 각도구하기 + + const topL = (length1 - length2) / 2 / Math.cos((angle * Math.PI) / 180) // 꺽이는부분 윗쪽 길이 + + points = [ + { + x: pointer.x - length1 / 2 + length1, + y: pointer.y + length3 / 2, + }, + { + x: pointer.x - length1 / 2, + y: pointer.y + length3 / 2, + }, + { + x: pointer.x - length1 / 2 + length4 * Math.cos(angle), + y: pointer.y + length3 / 2 - length4 * Math.sin(degreesToRadians(angle)), + }, + { + x: pointer.x - length1 / 2 + length4 * Math.cos(degreesToRadians(angle)) + length2, + y: pointer.y + length3 / 2 - length4 * Math.sin(degreesToRadians(angle)), + }, + { + x: pointer.x - length1 / 2 + length4 * Math.cos(degreesToRadians(angle)) + length2 + topL * Math.cos(degreesToRadians(angle)), + y: pointer.y + length3 / 2 - length4 * Math.sin(degreesToRadians(angle)) + topL * Math.sin(degreesToRadians(angle)), + }, + ] + break + } + + case 18: { + const a = Math.sqrt(length3 * length3 - length2 * length2) // 입력된 밑변과 높이 + + const sinA = a / length3 + const angleInRadians = Math.asin(sinA) + const angleInDegrees = angleInRadians * (180 / Math.PI) + const b = a - length1 / 2 + + const c = b / Math.tan(angleInRadians) + const d = Math.sqrt(b * b + c * c) + const newAngleInRadians = (90 - angleInDegrees) * (Math.PI / 180) + points = [ + { x: pointer.x - (length1 + b) / 2, y: pointer.y + length2 / 2 }, + { x: pointer.x + length1 / 2 - b / 2, y: pointer.y + length2 / 2 }, + { + x: pointer.x + length1 / 2 - b / 2 + d * Math.cos(newAngleInRadians), + y: pointer.y + length2 / 2 - d * Math.sin(newAngleInRadians), + }, + { + x: pointer.x - (length1 + b) / 2 + length3 * Math.cos(newAngleInRadians), + y: pointer.y + length2 / 2 - length3 * Math.sin(newAngleInRadians), + }, + ] + break + } + } + + return points + } + + //면형상 선택 클릭시 지붕 패턴 입히기 + const setSurfaceShapePattern = (polygon) => { + const ratio = window.devicePixelRatio || 1 + + let width = 265 / 10 + let height = 150 / 10 + let roofStyle = 2 + const inputPatternSize = { width: width, height: height } //임시 사이즈 + const patternSize = { ...inputPatternSize } // 입력된 값을 뒤집기 위해 + + if (polygon.direction === 'east' || polygon.direction === 'west') { + //세로형이면 width height를 바꿈 + ;[patternSize.width, patternSize.height] = [inputPatternSize.height, patternSize.width] + } + + // 패턴 소스를 위한 임시 캔버스 생성 + const patternSourceCanvas = document.createElement('canvas') + patternSourceCanvas.width = polygon.width * ratio + patternSourceCanvas.height = polygon.height * ratio + const ctx = patternSourceCanvas.getContext('2d') + const offset = roofStyle === 1 ? 0 : patternSize.width / 2 + + const rows = Math.floor(patternSourceCanvas.height / patternSize.height) + const cols = Math.floor(patternSourceCanvas.width / patternSize.width) + + ctx.strokeStyle = 'green' + ctx.lineWidth = 0.4 + + for (let row = 0; row <= rows; row++) { + const y = row * patternSize.height + + ctx.beginPath() + ctx.moveTo(0, y) // 선 시작점 + ctx.lineTo(patternSourceCanvas.width, y) // 선 끝점 + ctx.stroke() + + for (let col = 0; col <= cols; col++) { + const x = col * patternSize.width + (row % 2 === 0 ? 0 : offset) + const yStart = row * patternSize.height + const yEnd = yStart + patternSize.height + + ctx.beginPath() + ctx.moveTo(x, yStart) // 선 시작점 + ctx.lineTo(x, yEnd) // 선 끝점 + ctx.stroke() + } + } + + // 패턴 생성 + const pattern = new fabric.Pattern({ + source: patternSourceCanvas, + repeat: 'repeat', + }) + + polygon.set('fill', null) + polygon.set('fill', pattern) + canvas?.renderAll() + } + + return { + applySurfaceShape, + } +} diff --git a/src/locales/ja.json b/src/locales/ja.json index cbda8988..faddd395 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -361,5 +361,12 @@ "main.content.objectList": "最近の更新物件一覧", "main.content.notice": "お知らせ", "main.content.download1": "操作マニュアル", - "main.content.download2": "屋根の説明書" + "main.content.download2": "屋根の説明書", + "surface.shape.validate.size": "寸法を入力してください.", + "surface.shape.validate.size.1to2": "①길이는 ②보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.1to3": "①길이는 ③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.1to23": "①길이는 ②+③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.2to3": "②길이는 ③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.3to4": "③길이는 ④보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.4to5": "④길이는 ⑤보다 큰 값을 넣어주세요." } diff --git a/src/locales/ko.json b/src/locales/ko.json index 6f3d3aca..3f5dd119 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -367,5 +367,12 @@ "main.content.objectList": "최근 갱신 물건목록", "main.content.notice": "공지사항", "main.content.download1": "조작메뉴얼", - "main.content.download2": "지붕설명서" + "main.content.download2": "지붕설명서", + "surface.shape.validate.size": "사이즈를 입력해 주세요.", + "surface.shape.validate.size.1to2": "①길이는 ②보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.1to3": "①길이는 ③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.1to23": "①길이는 ②+③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.2to3": "②길이는 ③보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.3to4": "③길이는 ④보다 큰 값을 넣어주세요.", + "surface.shape.validate.size.4to5": "④길이는 ⑤보다 큰 값을 넣어주세요." } From 63cb5abfddb27ef1eccc3c15d08ffae84d40eb14 Mon Sep 17 00:00:00 2001 From: minsik Date: Fri, 11 Oct 2024 15:10:58 +0900 Subject: [PATCH 20/27] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/canvas/additional-edit01.svg | 115 ++++++++++ .../images/canvas/additional-edit02.svg | 115 ++++++++++ .../images/canvas/additional_bundle-del01.svg | 106 ++++++++++ .../images/canvas/additional_bundle-del02.svg | 106 ++++++++++ .../images/canvas/additional_bundle-del03.svg | 115 ++++++++++ .../images/canvas/additional_bundle-del04.svg | 97 +++++++++ .../canvas/additional_bundle-edit01.svg | 124 +++++++++++ .../canvas/additional_bundle-edit02.svg | 124 +++++++++++ .../static/images/canvas/additional_del01.svg | 103 +++++++++ .../static/images/canvas/additional_del02.svg | 103 +++++++++ .../static/images/canvas/additional_del03.svg | 112 ++++++++++ .../static/images/canvas/additional_del04.svg | 94 +++++++++ public/static/images/main/login_email.svg | 10 + public/static/images/sub/address_search.svg | 11 + public/static/images/sub/information_help.svg | 4 + src/styles/_contents.scss | 60 +++++- src/styles/_grid-detail.scss | 3 + src/styles/_main.scss | 127 +++++++++-- src/styles/_modal.scss | 141 +++++++++++++ src/styles/_reset.scss | 66 +++++- src/styles/_submodal.scss | 199 ++++++++++++++++++ src/styles/_table.scss | 85 +++++++- src/styles/contents.scss | 1 + src/styles/style.scss | 3 +- 24 files changed, 1996 insertions(+), 28 deletions(-) create mode 100644 public/static/images/canvas/additional-edit01.svg create mode 100644 public/static/images/canvas/additional-edit02.svg create mode 100644 public/static/images/canvas/additional_bundle-del01.svg create mode 100644 public/static/images/canvas/additional_bundle-del02.svg create mode 100644 public/static/images/canvas/additional_bundle-del03.svg create mode 100644 public/static/images/canvas/additional_bundle-del04.svg create mode 100644 public/static/images/canvas/additional_bundle-edit01.svg create mode 100644 public/static/images/canvas/additional_bundle-edit02.svg create mode 100644 public/static/images/canvas/additional_del01.svg create mode 100644 public/static/images/canvas/additional_del02.svg create mode 100644 public/static/images/canvas/additional_del03.svg create mode 100644 public/static/images/canvas/additional_del04.svg create mode 100644 public/static/images/main/login_email.svg create mode 100644 public/static/images/sub/address_search.svg create mode 100644 public/static/images/sub/information_help.svg create mode 100644 src/styles/_submodal.scss diff --git a/public/static/images/canvas/additional-edit01.svg b/public/static/images/canvas/additional-edit01.svg new file mode 100644 index 00000000..2e8ce52c --- /dev/null +++ b/public/static/images/canvas/additional-edit01.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional-edit02.svg b/public/static/images/canvas/additional-edit02.svg new file mode 100644 index 00000000..5d3a03cd --- /dev/null +++ b/public/static/images/canvas/additional-edit02.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del01.svg b/public/static/images/canvas/additional_bundle-del01.svg new file mode 100644 index 00000000..29ad58c0 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del01.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del02.svg b/public/static/images/canvas/additional_bundle-del02.svg new file mode 100644 index 00000000..797adf82 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del02.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del03.svg b/public/static/images/canvas/additional_bundle-del03.svg new file mode 100644 index 00000000..082cae56 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del03.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del04.svg b/public/static/images/canvas/additional_bundle-del04.svg new file mode 100644 index 00000000..4f28a719 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del04.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-edit01.svg b/public/static/images/canvas/additional_bundle-edit01.svg new file mode 100644 index 00000000..38c3846c --- /dev/null +++ b/public/static/images/canvas/additional_bundle-edit01.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-edit02.svg b/public/static/images/canvas/additional_bundle-edit02.svg new file mode 100644 index 00000000..8b2c9f7b --- /dev/null +++ b/public/static/images/canvas/additional_bundle-edit02.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del01.svg b/public/static/images/canvas/additional_del01.svg new file mode 100644 index 00000000..17e8cea0 --- /dev/null +++ b/public/static/images/canvas/additional_del01.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del02.svg b/public/static/images/canvas/additional_del02.svg new file mode 100644 index 00000000..575dae2b --- /dev/null +++ b/public/static/images/canvas/additional_del02.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del03.svg b/public/static/images/canvas/additional_del03.svg new file mode 100644 index 00000000..2d071afd --- /dev/null +++ b/public/static/images/canvas/additional_del03.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del04.svg b/public/static/images/canvas/additional_del04.svg new file mode 100644 index 00000000..b5dc6431 --- /dev/null +++ b/public/static/images/canvas/additional_del04.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/main/login_email.svg b/public/static/images/main/login_email.svg new file mode 100644 index 00000000..1ea1a274 --- /dev/null +++ b/public/static/images/main/login_email.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/static/images/sub/address_search.svg b/public/static/images/sub/address_search.svg new file mode 100644 index 00000000..4c0e2d1e --- /dev/null +++ b/public/static/images/sub/address_search.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/static/images/sub/information_help.svg b/public/static/images/sub/information_help.svg new file mode 100644 index 00000000..9eb16941 --- /dev/null +++ b/public/static/images/sub/information_help.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss index 7e087a87..271ebc20 100644 --- a/src/styles/_contents.scss +++ b/src/styles/_contents.scss @@ -388,9 +388,10 @@ canvas{ position: absolute; top: 0; - left: 0; - width: 100%; - height: 100%; + left: 50%; + transform: translateX(-50%); + width: 1600px; + height: 1000px; } } @@ -595,17 +596,27 @@ .important{ color: #f00; } - .sub-table-footer{ + .sub-center-footer{ display: flex; align-items: center; justify-content: center; margin-top: 20px; } + .sub-right-footer{ + display: flex; + align-items: center; + justify-content: flex-end; + margin-top: 20px; + } .pagination-wrap{ margin-top: 24px; } } +.infomation-wrap{ + margin-bottom: 30px; +} + .infomation-box-wrap{ display: flex; align-items: center; @@ -850,3 +861,44 @@ } } +// 물건상세 +.information-help-wrap{ + display: flex; + padding: 24px; + background-color: #F4F4F4; + border-radius: 4px; + margin-bottom: 15px; + .information-help-tit-wrap{ + position: relative; + display: flex; + align-items: center; + padding-right: 40px; + border-right: 1px solid #E0E0E3; + .help-tit-icon{ + width: 40px; + height: 40px; + border-radius: 50%; + margin-right: 10px; + background: #fff url(../../public/static/images/sub/information_help.svg)no-repeat center; + background-size: 20px 20px; + } + .help-tit{ + font-size: 13px; + font-weight: 600; + color: #45576F; + } + } + .information-help-guide{ + padding-left: 40px; + span{ + display: block; + font-size: 12px; + font-weight: 400; + color: #45576F; + margin-bottom: 7px; + &:last-child{ + margin-bottom: 0; + } + } + } +} \ No newline at end of file diff --git a/src/styles/_grid-detail.scss b/src/styles/_grid-detail.scss index a673236a..4cf9d3b2 100644 --- a/src/styles/_grid-detail.scss +++ b/src/styles/_grid-detail.scss @@ -36,6 +36,9 @@ &:nth-child(2n){ background-color: #F7F9FA; } + &.important_row{ + background-color: #e7e7e7; + } } .ag-cell{ font-size: 13px; diff --git a/src/styles/_main.scss b/src/styles/_main.scss index 334a0485..37170a8b 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -394,6 +394,9 @@ font-weight: 600; margin-bottom: 5px; } + &.pw-reset{ + font-size: 13px; + } } .login-input-wrap{ margin-top: 30px; @@ -412,8 +415,10 @@ background-color: transparent; font-size: 13px; font-weight: 400; - color: #D1D7E0; + color: #6c819c; &::placeholder{ + font-size: 13px; + font-weight: 400; color: #D1D7E0; } } @@ -442,6 +447,17 @@ background-size: 17px 17px; } } + &.email{ + &::before{ + background: url(../../public/static/images/main/login_email.svg)no-repeat center; + width: 12px; + height: 9px; + } + .id-delete{ + background-image: url(../../public/static/images/main/id_delete.svg); + background-size: 17px 17px; + } + } &.password{ margin-bottom: 20px; &::before{ @@ -456,27 +472,35 @@ } } } + .login-btn{ + display: block; + width: 100%; + height: 45px; + background-color: #5C6773; + color: #fff; + font-size: 15px; + font-weight: 600; + border-radius: 4px; + transition: background .15s ease-in-out; + &:hover{ + background-color: #717e8d; + } + &.light{ + background-color: #fff; + border: 1px solid #5C6773; + color: #5C6773; + } + } .login-btn-box{ margin-bottom: 20px; - .login-btn{ - display: block; - width: 100%; - height: 45px; - background-color: #5C6773; - color: #fff; - font-size: 15px; - font-weight: 600; - border-radius: 4px; - transition: background .15s ease-in-out; - &:hover{ - background-color: #717e8d; - } - } + } + .pwreset-btn-box{ + display: flex; } .reset-password{ width: 100%; text-align: center; - a{ + button{ position: relative; font-size: 13px; color: #364864; @@ -554,4 +578,75 @@ top: -2px; left: 1px; } +} + +// 회원가입 +.center-page-wrap{ + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; + min-height: 100vh; + background-color: #F4F4F7; + overflow-x: hidden; + .center-page-inner{ + width: 100%; + max-width: 1720px; + margin: 0 auto; + .center-page-tit{ + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 24px; + } + .sub-table-box{ + &.signup{ + margin-bottom: 20px; + } + } + .sign-up-btn-wrap{ + display: flex; + justify-content: flex-end; + } + &.complete{ + max-width: 1000px; + } + } + +} + +// 회원가입 완료 +.complete-box-wrap{ + padding: 72px 80px; + .complete-tit{ + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 17px; + } + .complete-txt{ + font-size: 13px; + font-weight: 400; + color: #101010; + margin-bottom: 27px; + } + .complete-email-wrap{ + padding: 36px 30px; + border-radius: 2px; + background: #F4F4F7; + margin-bottom: 20px; + .email-info{ + font-size: 13px; + font-weight: 400; + color: #000; + span{ + color: #204AF4; + font-weight: 500; + } + } + } + .complete-btn{ + display: flex; + justify-content: flex-end; + } } \ No newline at end of file diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index b7bb20ec..d70732b8 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -1673,6 +1673,7 @@ $alert-color: #101010; height: 30px; font-size: 12px; font-weight: 400; + transition: all .15s ease-in-out; &:first-child { border-left: 1px solid #505050; @@ -1824,4 +1825,144 @@ $alert-color: #101010; } } } +} + +// 회로 및 가대설정 +.circuit-check-inner { + padding: 5px 0; +} + +.x-scroll-table { + overflow-x: auto; + padding-bottom: 5px; + + .roof-module-table { + min-width: 1200px; + } + + &::-webkit-scrollbar { + height: 4px; + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: #D9D9D9; + } + + &::-webkit-scrollbar-track { + background-color: transparent; + } +} + +.circuit-right-wrap { + display: flex; + justify-content: flex-end; +} + +.circuit-data-form { + display: flex; + flex-direction: column; + gap: 5px; + min-height: 60px; + padding: 12px; + border: 1px solid rgba(255, 255, 255, 0.20); +} + +.circuit-table-tit { + color: #fff; + font-size: 12px; + font-weight: 600; + padding: 11px 10px; + background-color: #474747; + border: 1px solid #505050; + border-bottom: none; +} + +.circuit-overflow { + max-height: 560px; + overflow-y: auto; + margin-bottom: 15px; + + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + + &::-webkit-scrollbar-thumb { + background-color: #D9D9D9; + } + + &::-webkit-scrollbar-track { + background-color: transparent; + } +} + +.circuit-table-flx-wrap { + display: flex; + gap: 10px; + margin-bottom: 10px; + + .circuit-table-flx-box { + flex: 1; + display: flex; + flex-direction: column; + + .bottom-wrap { + margin-top: auto; + } + + .roof-module-table { + table { + table-layout: fixed; + } + } + } +} + +.circuit-count-input { + display: flex; + align-items: center; + gap: 10px; +} + +// 모듈부가기능 +.additional-radio-wrap { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 15px 0; + margin-bottom: 24px; +} + +.additional-wrap { + padding: 24px 0; + border-top: 1px solid #424242; +} + +.additional-color-wrap { + display: flex; + align-items: center; + padding: 5px 0; + gap: 15px; + + .additional-color-box { + display: flex; + align-items: center; + gap: 8px; + + .additional-color { + display: block; + width: 16px; + height: 16px; + + &.pink { + border: 2px solid #EA10AC; + background-color: #16417D; + } + + &.white { + border: 2px solid #FFF; + background-color: #001027; + } + } + } } \ No newline at end of file diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss index 7804b800..70c05a9e 100644 --- a/src/styles/_reset.scss +++ b/src/styles/_reset.scss @@ -215,6 +215,53 @@ button{ font-weight: 500; } } + &.roof{ + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + &.blue{ + background-color: #414E6C; + border: 1px solid #414E6C; + &:hover{ + background-color: #414E6C; + border: 1px solid #414E6C; + } + } + &.white{ + background-color: #fff; + border: 1px solid #fff; + color: #101010; + &:hover{ + background-color: #fff; + border: 1px solid #fff; + color: #101010; + } + } + &:hover{ + font-weight: 400; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + } + } + &.self{ + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #676767; + color: #AAAAAA; + &:hover{ + background-color: #272727; + border-color: #676767; + font-weight: 400; + } + } &:hover, &.act{ background-color: #1083E3; @@ -242,7 +289,7 @@ button{ .btn-origin{ display: inline-block; height: 30px; - padding: 0 14px; + padding: 0 10px; border-radius: 2px; background-color: #101010; color: #fff; @@ -252,7 +299,7 @@ button{ &.navy{ background-color: #304961; &:hover{ - background-color: #1083E3; + background-color: #233546; } } &.grey{ @@ -653,6 +700,7 @@ input[type=text]{ // check-box .d-check-box{ label{ + &.red{color: #FFCACA;} &::before{ cursor: pointer; content: ""; @@ -698,6 +746,20 @@ input[type=text]{ input[type=checkbox]:checked + label::after{ border-color: #fff; } + &.no-text{ + label{ + padding-left: 0; + } + } + } + &.sel{ + input[type=checkbox]:checked + label{ + color: #D7C863; + } + input[type=checkbox]:checked + label::before, + input[type=checkbox]:checked + label::after{ + border-color: #D7C863; + } } } diff --git a/src/styles/_submodal.scss b/src/styles/_submodal.scss new file mode 100644 index 00000000..34d0e9ce --- /dev/null +++ b/src/styles/_submodal.scss @@ -0,0 +1,199 @@ +.modal-popup{ + position: fixed; + top: 0; + left: 0; + width:100%; + height:100%; + overflow-x: hidden; + overflow-y: auto; + background:rgba(0,0,0,.75); + z-index:110000; + .modal-dialog { + position: relative; + display: flex; + align-items: center; + min-height: calc(100% - (1.5rem * 2)); + width: 680px; + z-index:200000; + margin: 1.5rem auto; + pointer-events: none; + &.middle{ + width: 800px; + } + &.big{ + width: 1000px; + } + .modal-content{ + flex:1; + position: relative; + background-clip: padding-box; + background-color: transparent; + outline: 0 none; + pointer-events: auto; + border-radius: 4px; + .modal-header{ + display: flex; + align-items: center; + padding: 10px 24px; + background-color: #7992ba; + border-radius: 4px 4px 0px 0px; + // overflow: hidden; + h1.title{ + font-size: 13px; + color: $pop-color; + font-weight: 700; + } + .modal-close{ + margin-left: auto; + color: transparent; + font-size: 0; + width: 10px; + height: 10px; + background: url(../../public/static/images/canvas/modal_close.svg)no-repeat center; + } + } + .modal-body{ + padding: 30px; + background-color: #fff; + border-radius: 0px 0px 4px 4px; + .modal-body-inner{ + margin-bottom: 20px; + &.border{ + padding-bottom: 20px; + border-bottom: 1px solid #ECF0F4; + } + } + .footer-btn-wrap{ + display: flex; + align-items: center; + justify-content: flex-end; + } + } + } + } +} + +// modal-contents + +// 비밀번호 변경 +.change-password-guide{ + + span{ + display: block; + margin-bottom: 5px; + font-size: 13px; + font-weight: 400; + color: #101010; + &:last-child{ + margin-bottom: 0; + } + } +} + +.change-password-box{ + padding: 30px; + border-radius: 4px; + background: #F4F4F7; + margin-bottom: 20px; + .change-password-tit{ + .tit-b{ + font-size: 13px; + font-weight: 500; + color: #344356; + } + .tit-s{ + font-size: 12px; + font-weight: 400; + color: #898989; + } + } + .change-password-input{ + width: 100%; + .change-password{ + width: 100%; + height: 45px; + border-radius: 4px; + border: 1px solid #E9E9E9; + background-color: #fff; + padding: 0 10px; + font-size: 12px; + color: #364864; + font-family: 'Noto Sans JP', sans-serif; + &::placeholder{ + font-size: 12px; + } + } + } + .table-item-th{ + width: 145px; + } +} +.form-table{ + display: table; + table-layout: auto; + width: 100%; + .table-item{ + display: table-row; + .table-item-th, + .table-item-td{ + display: table-cell; + vertical-align: middle; + padding-bottom: 10px; + } + &:last-child{ + .table-item-th, + .table-item-td{ + padding-bottom: 0; + } + } + .table-item-td{ + padding-left: 10px; + } + } +} + +// 주소찾기 팝업 +.address-input-wrap{ + position: relative; + height: 45px; + padding: 0 40px 0 15px; + border-radius: 4px; + border: 1px solid #E9E9E9; + background: #FFF; + margin-bottom: 20px; + input{ + width: 100%; + height: 100%; + font-size: 13px; + font-weight: 400; + font-family: "Noto Sans JP" sans-serif; + color: #868686; + &::placeholder{ + color: #AEAEAE; + font-size: 13px; + font-weight: 400; + } + } + .search-btn{ + position: absolute; + top: 0; + right: 15px; + width: 21px; + height: 100%; + background: url(../../public/static/images/sub/address_search.svg)no-repeat center; + background-size: 21px 21px; + } +} + +// 설계의뢰 불러오기 +.design-request-table{ + margin-bottom: 20px; +} +.design-request-grid{ + .design-request-grid-tit{ + font-size: 13px; + font-weight: 600; + color: #101010; + margin-bottom: 15px; + } +} \ No newline at end of file diff --git a/src/styles/_table.scss b/src/styles/_table.scss index a87bfc5b..5aa068d0 100644 --- a/src/styles/_table.scss +++ b/src/styles/_table.scss @@ -14,6 +14,10 @@ table{ } } +.flx-box{ + @include flexbox; +} + .common-table{ table{ table-layout: fixed; @@ -85,6 +89,7 @@ table{ color: #697C8F; font-weight: normal; margin-left: 15px; + margin-bottom: 0; } span{ font-size: 13px; @@ -97,11 +102,10 @@ table{ } } } - .flx-box{ - @include flexbox; - } + } .tooltips{ + position: relative; display: block; width: 14px; height: 14px; @@ -109,6 +113,10 @@ table{ background: url(../../public/static/images/sub/tooltips.svg)no-repeat center; background-size: cover; cursor: pointer; + span{ + position: absolute; + white-space: nowrap; + } } } @@ -182,8 +190,9 @@ table{ thead{ th{ height: 40px; - padding: 0 10px; + padding: 0px 10px; font-size: 12px; + line-height: 1.1; color: #fff; font-weight: 500; border: 1px solid #505050; @@ -191,14 +200,82 @@ table{ background-color: rgba(255, 255, 255, 0.05); text-align: center; word-break: keep-all; + .d-check-box{ + opacity: 0.5; + } } } tbody{ + tr{ + cursor: pointer; + &.on{ + background-color: #272727; + } + } td{ + height: 40px; + vertical-align: middle; font-size: 12px; color: #fff; font-weight: 400; border: 1px solid #505050; + padding: 0 10px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + .warning{ + color: PCSオプションマスター; + } + .color-wrap{ + display: flex; + align-items: center; + .color-box{ + width: 14px; + height: 14px; + margin-right: 8px; + } + .name{ + width: 0; + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + } + } + } + } + &.overflow-y{ + table{ + table-layout: fixed; + border-collapse: collapse; + thead{ + display: table; + table-layout: fixed; + width: 100%; + border-collapse: collapse; + } + tbody{ + display: block; + max-height: 81px; + overflow-y: auto; + tr{ + display: table; + table-layout: fixed; + width: 100%; + border-collapse: collapse; + margin-top: -1px; + } + &::-webkit-scrollbar { + width: 2px; + background-color: rgba(255, 255, 255, 0.05); + } + &::-webkit-scrollbar-thumb { + background-color: #C1CCD7; + } + &::-webkit-scrollbar-track { + background-color: rgba(255, 255, 255, 0.05); + } } } } diff --git a/src/styles/contents.scss b/src/styles/contents.scss index 38e7ff83..613c0644 100644 --- a/src/styles/contents.scss +++ b/src/styles/contents.scss @@ -1,4 +1,5 @@ @import '_contents.scss'; @import '_modal.scss'; +@import '_submodal.scss'; @import '_table.scss'; @import '_canvasside.scss'; \ No newline at end of file diff --git a/src/styles/style.scss b/src/styles/style.scss index b3b49ed9..1841ebb9 100644 --- a/src/styles/style.scss +++ b/src/styles/style.scss @@ -1,2 +1 @@ -@import '_main.scss'; -@import '_contents'; \ No newline at end of file +@import '_main.scss'; \ No newline at end of file From f84d3a912f6ec15736ee6416980ad1a694fd3019 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 11 Oct 2024 15:19:31 +0900 Subject: [PATCH 21/27] =?UTF-8?q?=EB=AA=A8=EB=8B=AC=EC=B0=BD=20css=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/surface/useSurfaceShapeBatch.js | 2 -- src/styles/_modal.scss | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/hooks/surface/useSurfaceShapeBatch.js b/src/hooks/surface/useSurfaceShapeBatch.js index e612a463..b52781b6 100644 --- a/src/hooks/surface/useSurfaceShapeBatch.js +++ b/src/hooks/surface/useSurfaceShapeBatch.js @@ -58,8 +58,6 @@ export function useSurfaceShapeBatch() { if (checkSurfaceShape(surfaceId, { length1, length2, length3, length4, length5 })) { setShowPlacementSurfaceSettingModal(false) canvas?.on('mouse:move', (e) => { - console.log('asdfasdfasdfasdfasdfsdfasdfsdf') - if (!isDrawing) { return } diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index 9343ae23..579e1334 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -38,8 +38,6 @@ $alert-color: #101010; .modal-pop-wrap { position: fixed; - top: 200px; - right: 100px; width: 100%; height: -webkit-fit-content; height: -moz-fit-content; From 1bbba2817f0b616f7aed4f9591ed59d59b26e8aa Mon Sep 17 00:00:00 2001 From: minsik Date: Fri, 11 Oct 2024 15:40:24 +0900 Subject: [PATCH 22/27] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/canvas/additional-edit01.svg | 115 + .../images/canvas/additional-edit02.svg | 0 .../images/canvas/additional_bundle-del01.svg | 0 .../images/canvas/additional_bundle-del02.svg | 106 + .../images/canvas/additional_bundle-del03.svg | 0 .../images/canvas/additional_bundle-del04.svg | 97 + .../canvas/additional_bundle-edit01.svg | 0 .../canvas/additional_bundle-edit02.svg | 0 .../static/images/canvas/additional_del01.svg | 103 + .../static/images/canvas/additional_del02.svg | 0 .../static/images/canvas/additional_del03.svg | 0 .../static/images/canvas/additional_del04.svg | 0 src/styles/_canvasside.scss | 196 +- src/styles/_contents.scss | 1874 +++++++++-------- src/styles/_grid-detail.scss | 3 + src/styles/_main.scss | 1277 ++++++----- src/styles/_modal.scss | 401 +++- src/styles/_reset.scss | 1504 ++++++------- src/styles/_submodal.scss | 343 +-- src/styles/_table.scss | 547 ++--- src/styles/contents.scss | 2 +- src/styles/style.scss | 3 +- 22 files changed, 3623 insertions(+), 2948 deletions(-) create mode 100644 public/static/images/canvas/additional-edit01.svg create mode 100644 public/static/images/canvas/additional-edit02.svg create mode 100644 public/static/images/canvas/additional_bundle-del01.svg create mode 100644 public/static/images/canvas/additional_bundle-del02.svg create mode 100644 public/static/images/canvas/additional_bundle-del03.svg create mode 100644 public/static/images/canvas/additional_bundle-del04.svg create mode 100644 public/static/images/canvas/additional_bundle-edit01.svg create mode 100644 public/static/images/canvas/additional_bundle-edit02.svg create mode 100644 public/static/images/canvas/additional_del01.svg create mode 100644 public/static/images/canvas/additional_del02.svg create mode 100644 public/static/images/canvas/additional_del03.svg create mode 100644 public/static/images/canvas/additional_del04.svg diff --git a/public/static/images/canvas/additional-edit01.svg b/public/static/images/canvas/additional-edit01.svg new file mode 100644 index 00000000..2e8ce52c --- /dev/null +++ b/public/static/images/canvas/additional-edit01.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional-edit02.svg b/public/static/images/canvas/additional-edit02.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_bundle-del01.svg b/public/static/images/canvas/additional_bundle-del01.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_bundle-del02.svg b/public/static/images/canvas/additional_bundle-del02.svg new file mode 100644 index 00000000..797adf82 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del02.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del03.svg b/public/static/images/canvas/additional_bundle-del03.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_bundle-del04.svg b/public/static/images/canvas/additional_bundle-del04.svg new file mode 100644 index 00000000..4f28a719 --- /dev/null +++ b/public/static/images/canvas/additional_bundle-del04.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-edit01.svg b/public/static/images/canvas/additional_bundle-edit01.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_bundle-edit02.svg b/public/static/images/canvas/additional_bundle-edit02.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_del01.svg b/public/static/images/canvas/additional_del01.svg new file mode 100644 index 00000000..17e8cea0 --- /dev/null +++ b/public/static/images/canvas/additional_del01.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del02.svg b/public/static/images/canvas/additional_del02.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_del03.svg b/public/static/images/canvas/additional_del03.svg new file mode 100644 index 00000000..e69de29b diff --git a/public/static/images/canvas/additional_del04.svg b/public/static/images/canvas/additional_del04.svg new file mode 100644 index 00000000..e69de29b diff --git a/src/styles/_canvasside.scss b/src/styles/_canvasside.scss index 8ef0c762..66bba83d 100644 --- a/src/styles/_canvasside.scss +++ b/src/styles/_canvasside.scss @@ -1,106 +1,106 @@ // 패널 배치 집계 -.penal-wrap { - position: fixed; - top: 200px; - left: 50px; - z-index: 999999; - width: 237px; - height: 40px; - line-height: 40px; - background-color: #fff; - border: 1px solid #dfdfdf; - padding: 0 34px 0 10px; - border-radius: 2px; - box-shadow: 0px 7px 14px 0px rgba(0, 0, 0, 0.05); - cursor: pointer; - &::before { - content: ''; - position: absolute; - top: 50%; - right: 12px; - transform: translateY(-50%); - width: 10px; - height: 6px; - background: url(../../public/static/images/canvas/penal_arr.svg) no-repeat center; - background-size: cover; - } - h2 { - font-size: 12px; - font-weight: 500; - color: #3d3d3d; - } - .penal-table-wrap { - display: none; - position: absolute; - top: 100%; - left: -1px; - min-width: calc(100% + 2px); - background-color: #3d3d3d; - border: 1px solid #3d3d3d; - padding: 20px; - .penal-table { - table-layout: fixed; - border-collapse: collapse; - thead { - th { - text-align: center; - background-color: rgba(255, 255, 255, 0.05); - font-size: 12px; - font-weight: 500; - color: #fff; - border: 1px solid #505050; +.penal-wrap{ + position: fixed; + top: 200px; + left: 50px; + z-index: 999999; + width: 237px; + height: 40px; + line-height: 40px; + background-color: #fff; + border: 1px solid #DFDFDF; + padding: 0 34px 0 10px; + border-radius: 2px; + box-shadow: 0px 7px 14px 0px rgba(0, 0, 0, 0.05); + cursor: pointer; + &::before{ + content: ''; + position: absolute; + top: 50%; + right: 12px; + transform: translateY(-50%); + width: 10px; + height: 6px; + background: url(../../public/static/images/canvas/penal_arr.svg)no-repeat center; + background-size: cover; + } + h2{ + font-size: 12px; + font-weight: 500; + color: #3D3D3D; + } + .penal-table-wrap{ + display: none; + position: absolute; + top: 100%; + left: -1px; + min-width: calc(100% + 2px); + background-color: #3D3D3D; + border: 1px solid #3D3D3D; + padding: 20px; + .penal-table{ + table-layout: fixed; + border-collapse: collapse; + thead{ + th{ + text-align: center; + background-color:rgba(255, 255, 255, 0.05); + font-size: 12px; + font-weight: 500; + color: #fff; + border: 1px solid #505050; + } + } + tbody{ + td{ + font-size: 12px; + color: #fff; + font-weight: 400; + text-align: center; + padding: 0 10px; + border: 1px solid #505050; + } + } } - } - tbody { - td { - font-size: 12px; - color: #fff; - font-weight: 400; - text-align: center; - padding: 0 10px; - border: 1px solid #505050; + } + &.act{ + border: 1px solid #3D3D3D; + background-color: #3D3D3D; + h2{ + color: #fff; + } + &::before{ + background: url(../../public/static/images/canvas/penal_arr_white.svg)no-repeat center; + } + .penal-table-wrap{ + display: block; } - } } - } - &.act { - border: 1px solid #3d3d3d; - background-color: #3d3d3d; - h2 { - color: #fff; - } - &::before { - background: url(../../public/static/images/canvas/penal_arr_white.svg) no-repeat center; - } - .penal-table-wrap { - display: block; - } - } } // context menu -.context-menu-wrap { - min-width: 238px; - border-radius: 4px; - border: 1px solid #e9e9e9; - background: #fff; - box-shadow: 0px 6px 14px 0px rgba(0, 0, 0, 0.05); - ul { - padding: 17px 0; - border-bottom: 1px solid #e9e9e9; - &:last-child { - border: none; +.context-menu-wrap{ + min-width: 238px; + border-radius: 4px; + border: 1px solid #E9E9E9; + background: #FFF; + box-shadow: 0px 6px 14px 0px rgba(0, 0, 0, 0.05); + ul{ + padding: 17px 0; + border-bottom: 1px solid #E9E9E9; + &:last-child{ + border: none; + } + li{ + padding: 4px 30px; + cursor: pointer; + font-size: 12px; + font-weight: 400; + color: #101010; + &:hover{ + color: #fff; + background-color: #0D99FF; + } + } } - li { - padding: 4px 30px; - cursor: pointer; - font-size: 12px; - font-weight: 400; - color: #101010; - &:hover { - color: #fff; - background-color: #0d99ff; - } - } - } -} +} \ No newline at end of file diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss index 275a917f..dc02fc85 100644 --- a/src/styles/_contents.scss +++ b/src/styles/_contents.scss @@ -1,953 +1,1093 @@ // CanvasPage -.canvas-wrap { - height: calc(100vh - 47px); - display: flex; - flex-direction: column; - .canvas-content { - flex: 1 1 auto; - .canvas-layout { - height: 100%; +.canvas-wrap{ + height: calc(100vh - 47px); + display: flex; + flex-direction: column; + .canvas-content{ + flex: 1 1 auto; + .canvas-layout{ + height: 100%; + } } - } - &.sub-wrap { - overflow: hidden; - .canvas-content { - height: calc(100% - 47px); + &.sub-wrap{ + overflow: hidden; + .canvas-content{ + height: calc(100% - 47px); + } } - } } // CanvasMenu -.canvas-menu-wrap { - position: relative; - display: block; - width: 100%; - padding-bottom: 0; - background-color: #383838; - transition: padding 0.17s ease-in-out; - .canvas-menu-inner { +.canvas-menu-wrap{ position: relative; - display: flex; - align-items: center; - padding: 0 40px 0 20px; - background-color: #2c2c2c; - z-index: 999; - .canvas-menu-list { - display: flex; - align-items: center; - height: 100%; - .canvas-menu-item { - display: flex; - align-items: center; - height: 100%; - button { - display: flex; - align-items: center; - font-size: 12px; - height: 100%; - color: #fff; - font-weight: 600; - padding: 15px 20px; - opacity: 0.55; - transition: all 0.17s ease-in-out; - .menu-icon { - display: block; - width: 16px; - height: 16px; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - margin-right: 10px; - &.con00 { - background-image: url(/static/images/canvas/menu_icon00.svg); - } - &.con01 { - background-image: url(/static/images/canvas/menu_icon01.svg); - } - &.con02 { - background-image: url(/static/images/canvas/menu_icon02.svg); - } - &.con03 { - background-image: url(/static/images/canvas/menu_icon03.svg); - } - &.con04 { - background-image: url(/static/images/canvas/menu_icon04.svg); - } - &.con05 { - background-image: url(/static/images/canvas/menu_icon05.svg); - } - &.con06 { - background-image: url(/static/images/canvas/menu_icon06.svg); - } - } - } - &.active { - background-color: #383838; - button { - opacity: 1; - } - } - } - } - .canvas-side-btn-wrap { - display: flex; - align-items: center; - margin-left: auto; - .select-box { - width: 124px; - margin-right: 5px; - > div { - width: 100%; - } - } - .btn-from { - display: flex; - align-items: center; - gap: 5px; - button { - display: block; - width: 30px; - height: 30px; - border-radius: 2px; - background-color: #3d3d3d; - background-position: center; - background-repeat: no-repeat; - background-size: 15px 15px; - transition: all 0.17s ease-in-out; - &.btn01 { - background-image: url(../../public/static/images/canvas/side_icon03.svg); - } - &.btn02 { - background-image: url(../../public/static/images/canvas/side_icon02.svg); - } - &.btn03 { - background-image: url(../../public/static/images/canvas/side_icon01.svg); - } - &.btn04 { - background-image: url(../../public/static/images/canvas/side_icon04.svg); - } - &.btn05 { - background-image: url(../../public/static/images/canvas/side_icon05.svg); - } - &.btn06 { - background-image: url(../../public/static/images/canvas/side_icon06.svg); - } - &.btn07 { - background-image: url(../../public/static/images/canvas/side_icon07.svg); - } - &.btn08 { - background-image: url(../../public/static/images/canvas/side_icon08.svg); - } - &.btn09 { - background-image: url(../../public/static/images/canvas/side_icon09.svg); - } - &:hover { - background-color: #1083e3; - } - &.active { - background-color: #1083e3; - } - } - } - .ico-btn-from { - display: flex; - align-items: center; - gap: 5px; - button { - .ico { - display: block; - width: 15px; - height: 15px; - background-repeat: no-repeat; - background-position: center; - background-size: contain; - &.ico01 { - background-image: url(../../public/static/images/canvas/ico-flx01.svg); - } - &.ico02 { - background-image: url(../../public/static/images/canvas/ico-flx02.svg); - } - &.ico03 { - background-image: url(../../public/static/images/canvas/ico-flx03.svg); - } - &.ico04 { - background-image: url(../../public/static/images/canvas/ico-flx04.svg); - } - } - .name { - font-size: 12px; - color: #fff; - } - } - &.form06 { - .name { - font-size: 13px; - } - } - } - .vertical-horizontal { - display: flex; - min-width: 170px; - height: 28px; - margin: 0 5px; - border-radius: 2px; - background: #373737; - line-height: 28px; - overflow: hidden; - span { - padding: 0 10px; - font-size: 13px; - color: #fff; - } - button { - margin-left: auto; - height: 100%; - background-color: #4b4b4b; - font-size: 13px; - font-weight: 400; - color: #fff; - padding: 0 7.5px; - transition: all 0.17s ease-in-out; - } - &.on { - button { - background-color: #1083e3; - } - } - } - .size-control { - display: flex; - align-items: center; - justify-content: center; - gap: 10px; - background-color: #3d3d3d; - border-radius: 2px; - width: 100px; - height: 30px; - margin: 0 5px; - span { - font-size: 13px; - color: #fff; - } - .control-btn { - display: block; - width: 12px; - height: 12px; - background-repeat: no-repeat; - background-size: cover; - background-position: center; - &.minus { - background-image: url(../../public/static/images/canvas/minus.svg); - } - &.plus { - background-image: url(../../public/static/images/canvas/plus.svg); - } - } - } - } - } - .canvas-depth2-wrap { - position: absolute; - top: -100%; - left: 0; - background-color: #383838; + display: block; width: 100%; - height: 50px; - transition: all 0.17s ease-in-out; - .canvas-depth2-inner { - display: flex; - align-items: center; - padding: 0 40px; - height: 100%; - .canvas-depth2-list { + padding-bottom: 0; + background-color: #383838; + transition: padding .17s ease-in-out; + .canvas-menu-inner{ + position: relative; display: flex; align-items: center; - height: 100%; - .canvas-depth2-item { - display: flex; - align-items: center; - margin-right: 26px; - height: 100%; - button { - position: relative; - opacity: 0.55; - color: #fff; - font-size: 12px; - font-weight: normal; + padding: 0 40px 0 20px; + background-color: #2C2C2C; + z-index: 999; + .canvas-menu-list{ + display: flex; + align-items: center; height: 100%; - padding-right: 12px; - } - &.active { - button { - opacity: 1; - font-weight: 600; - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; - } + .canvas-menu-item{ + display: flex; + align-items: center; + height: 100%; + button{ + display: flex; + align-items: center; + font-size: 12px; + height: 100%; + color: #fff; + font-weight: 600; + padding: 15px 20px; + opacity: 0.55; + transition: all .17s ease-in-out; + .menu-icon{ + display: block; + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + margin-right: 10px; + &.con00{background-image: url(/static/images/canvas/menu_icon00.svg);} + &.con01{background-image: url(/static/images/canvas/menu_icon01.svg);} + &.con02{background-image: url(/static/images/canvas/menu_icon02.svg);} + &.con03{background-image: url(/static/images/canvas/menu_icon03.svg);} + &.con04{background-image: url(/static/images/canvas/menu_icon04.svg);} + &.con05{background-image: url(/static/images/canvas/menu_icon05.svg);} + &.con06{background-image: url(/static/images/canvas/menu_icon06.svg);} + } + } + &.active{ + background-color: #383838; + button{ + opacity: 1; + } + } } - } } - } - .canvas-depth2-btn-list { - display: flex; - align-items: center; - margin-left: auto; - height: 100%; - .depth2-btn-box { - display: flex; - align-items: center; - margin-right: 34px; - height: 100%; - transition: all 0.17s ease-in-out; - button { - position: relative; - font-size: 12px; - font-weight: 400; + .canvas-side-btn-wrap{ + display: flex; + align-items: center; + margin-left: auto; + .select-box{ + width: 124px; + margin-right: 5px; + > div{ + width: 100%; + } + } + .btn-from{ + display: flex; + align-items: center; + gap: 5px; + button{ + display: block; + width: 30px; + height: 30px; + border-radius: 2px; + background-color: #3D3D3D; + background-position: center; + background-repeat: no-repeat; + background-size: 15px 15px; + transition: all .17s ease-in-out; + &.btn01{background-image: url(../../public/static/images/canvas/side_icon03.svg);} + &.btn02{background-image: url(../../public/static/images/canvas/side_icon02.svg);} + &.btn03{background-image: url(../../public/static/images/canvas/side_icon01.svg);} + &.btn04{background-image: url(../../public/static/images/canvas/side_icon04.svg);} + &.btn05{background-image: url(../../public/static/images/canvas/side_icon05.svg);} + &.btn06{background-image: url(../../public/static/images/canvas/side_icon06.svg);} + &.btn07{background-image: url(../../public/static/images/canvas/side_icon07.svg);} + &.btn08{background-image: url(../../public/static/images/canvas/side_icon08.svg);} + &.btn09{background-image: url(../../public/static/images/canvas/side_icon09.svg);} + &:hover{ + background-color: #1083E3; + } + &.active{ + background-color: #1083E3; + } + } + } + .ico-btn-from{ + display: flex; + align-items: center; + gap: 5px; + button{ + .ico{ + display: block; + width: 15px; + height: 15px; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + &.ico01{background-image: url(../../public/static/images/canvas/ico-flx01.svg);} + &.ico02{background-image: url(../../public/static/images/canvas/ico-flx02.svg);} + &.ico03{background-image: url(../../public/static/images/canvas/ico-flx03.svg);} + &.ico04{background-image: url(../../public/static/images/canvas/ico-flx04.svg);} + } + .name{ + font-size: 12px; + color: #fff; + } + } + &.form06{ + .name{ + font-size: 13px; + } + } + } + .vertical-horizontal{ + display: flex; + min-width: 170px; + height: 28px; + margin: 0 5px; + border-radius: 2px; + background: #373737; + line-height: 28px; + overflow: hidden; + span{ + padding: 0 10px; + font-size: 13px; + color: #fff; + } + button{ + margin-left: auto; + height: 100%; + background-color: #4B4B4B; + font-size: 13px; + font-weight: 400; + color: #fff; + padding: 0 7.5px; + transition: all .17s ease-in-out; + } + &.on{ + button{ + background-color: #1083E3; + } + } + } + .size-control{ + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + background-color: #3D3D3D; + border-radius: 2px; + width: 100px; + height: 30px; + margin: 0 5px; + span{ + font-size: 13px; + color: #fff; + } + .control-btn{ + display: block; + width: 12px; + height: 12px; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + &.minus{ + background-image: url(../../public/static/images/canvas/minus.svg); + } + &.plus{ + background-image: url(../../public/static/images/canvas/plus.svg); + } + } + } + } + } + .canvas-depth2-wrap{ + position: absolute; + top: -100%; + left: 0; + background-color: #383838; + width: 100%; + height: 50px; + transition: all .17s ease-in-out; + .canvas-depth2-inner{ + display: flex; + align-items: center; + padding: 0 40px; height: 100%; - color: #fff; - padding-right: 12px; - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; + .canvas-depth2-list{ + display: flex; + align-items: center ; + height: 100%; + .canvas-depth2-item{ + display: flex; + align-items: center; + margin-right: 26px; + height: 100%; + button{ + position: relative; + opacity: 0.55; + color: #fff; + font-size: 12px; + font-weight: normal; + height: 100%; + padding-right: 12px; + } + &.active{ + button{ + opacity: 1; + font-weight: 600; + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; + } + } + } + } + } + .canvas-depth2-btn-list{ + display: flex; + align-items: center; + margin-left: auto; + height: 100%; + .depth2-btn-box{ + display: flex; + align-items: center; + margin-right: 34px; + height: 100%; + transition: all .17s ease-in-out; + button{ + position: relative; + font-size: 12px; + font-weight: 400; + height: 100%; + color: #fff; + padding-right: 12px; + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/depth2-arr.svg) no-repeat center; + } + } + &:last-child{ + margin-right: 0; + } + &.mouse{ + opacity: 0.55; + } + } } - } - &:last-child { - margin-right: 0; - } - &.mouse { - opacity: 0.55; - } } - } + &.active{ + top: 47px; + } } - &.active { - top: 47px; + &.active{ + padding-bottom: 50px; } - } - &.active { - padding-bottom: 50px; - } } // canvas-layout -.canvas-layout { - .canvas-page-list { - display: flex; - background-color: #1c1c1c; - border-top: 1px solid #000; - width: 100%; - .canvas-plane-wrap { - display: flex; - align-items: center; - max-width: calc(100% - 45px); - .canvas-page-box { +.canvas-layout{ + .canvas-page-list{ display: flex; - align-items: center; - background-color: #1c1c1c; - padding: 9.6px 20px; - border-right: 1px solid #000; - min-width: 0; - transition: all 0.17s ease-in-out; - span { - display: flex; - align-items: center; - width: 100%; - font-size: 12px; - font-family: 'Pretendard', sans-serif; - color: #aaa; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; + background-color: #1C1C1C; + border-top: 1px solid #000; + width: 100%; + .canvas-plane-wrap{ + display: flex; + align-items: center; + max-width: calc(100% - 45px); + .canvas-page-box{ + display: flex; + align-items: center; + background-color: #1c1c1c; + padding: 9.6px 20px; + border-right:1px solid #000; + min-width: 0; + transition: all .17s ease-in-out; + span{ + display: flex; + align-items: center; + width: 100%; + font-size: 12px; + font-family: 'Pretendard', sans-serif; + color: #AAA; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .close{ + flex: none; + display: block; + width: 7px; + height: 8px; + margin-left: 15px; + background: url(../../public/static/images/canvas/plan_close_gray.svg)no-repeat center; + background-size: cover; + } + &.on{ + background-color: #fff; + span{ + font-weight: 600; + color: #101010; + } + .close{ + background: url(../../public/static/images/canvas/plan_close_black.svg)no-repeat center; + } + &:hover{ + background-color: #fff; + } + } + &:hover{ + background-color: #000; + } + } } - .close { - flex: none; - display: block; - width: 7px; - height: 8px; - margin-left: 15px; - background: url(../../public/static/images/canvas/plan_close_gray.svg) no-repeat center; - background-size: cover; + .plane-add{ + display: flex; + align-items: center; + justify-content: center; + width: 45px; + padding: 13.5px 0; + background-color: #1C1C1C; + border-right: 1px solid #000; + transition: all .17s ease-in-out; + span{ + display: block; + width: 9px; + height: 9px; + background: url(../../public/static/images/canvas/plane_add.svg)no-repeat center; + background-size: cover; + } + &:hover{ + background-color: #000; + } } - &.on { - background-color: #fff; - span { - font-weight: 600; - color: #101010; - } - .close { - background: url(../../public/static/images/canvas/plan_close_black.svg) no-repeat center; - } - &:hover { - background-color: #fff; - } - } - &:hover { - background-color: #000; - } - } } - .plane-add { - display: flex; - align-items: center; - justify-content: center; - width: 45px; - padding: 13.5px 0; - background-color: #1c1c1c; - border-right: 1px solid #000; - transition: all 0.17s ease-in-out; - span { - display: block; - width: 9px; - height: 9px; - background: url(../../public/static/images/canvas/plane_add.svg) no-repeat center; - background-size: cover; - } - &:hover { - background-color: #000; - } - } - } } -.canvas-frame { - position: relative; - height: calc(100% - 36.5px); - background-color: #fff; - canvas { - position: absolute; - top: 0; - left: 50%; - transform: translateX(-50%); - width: 1600px; - height: 1000px; - } +.canvas-frame{ + position: relative; + height: calc(100% - 36.5px); + background-color: #fff; + canvas{ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } } // sub-page -.sub-header { - position: fixed; - top: 46px; - left: 0; - width: 100%; - height: 46px; - border-bottom: 1px solid #000; - background: #2c2c2c; - z-index: 999; - .sub-header-inner { - display: flex; - align-items: center; - height: 100%; - padding: 0 100px; - .sub-header-title-wrap { - display: flex; - align-items: center; - .title-item { - position: relative; - padding: 0 24px; - a { - display: flex; - align-items: center; - .icon { - width: 22px; - height: 22px; - margin-right: 8px; - background-repeat: no-repeat; - background-position: center; - background-size: cover; - &.drawing { - background-image: url(../../public/static/images/main/drawing_icon.svg); - } - } - } - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 16px; - background-color: #d9d9d9; - } - &:first-child { - padding-left: 0; - } - &:last-child { - padding-right: 0; - &:after { - display: none; - } - } - } - } - .sub-header-title { - font-size: 16px; - color: #fff; - font-weight: 600; - } - .sub-header-location { - margin-left: auto; - display: flex; - align-items: center; - .location-item { - position: relative; +.sub-header{ + position: fixed; + top: 46px; + left: 0; + width: 100%; + height: 46px; + border-bottom: 1px solid #000; + background: #2C2C2C; + z-index: 999; + .sub-header-inner{ display: flex; align-items: center; - padding: 0 10px; - span { - display: flex; - font-size: 12px; - color: #aaa; - font-weight: normal; - cursor: default; + height: 100%; + padding: 0 100px; + .sub-header-title-wrap{ + display: flex; + align-items: center; + .title-item{ + position: relative; + padding: 0 24px; + a{ + display: flex; + align-items: center; + .icon{ + width: 22px; + height: 22px; + margin-right: 8px; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + &.drawing{background-image: url(../../public/static/images/main/drawing_icon.svg);} + } + } + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 16px; + background-color: #D9D9D9; + } + &:first-child{ + padding-left: 0; + } + &:last-child{ + padding-right: 0; + &:after{ + display: none; + } + } + } } - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 4px; - height: 6px; - background: url(../../public/static/images/main/loaction_arr.svg) no-repeat center; - } - &:first-child { - padding-left: 0; - } - &:last-child { - padding-right: 0; - span { + .sub-header-title{ + font-size: 16px; color: #fff; - } - &:after { - display: none; - } + font-weight: 600; + } + .sub-header-location{ + margin-left: auto; + display: flex; + align-items: center; + .location-item{ + position: relative; + display: flex; + align-items: center; + padding: 0 10px; + span{ + display: flex; + font-size: 12px; + color: #AAA; + font-weight: normal; + cursor: default; + } + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 4px; + height: 6px; + background: url(../../public/static/images/main/loaction_arr.svg)no-repeat center; + } + &:first-child{ + padding-left: 0; + } + &:last-child{ + padding-right: 0; + span{ + color: #fff; + } + &:after{ + display: none; + } + } + } } - } } - } } // sub content -.sub-content { - padding-top: 46px; - .sub-content-inner { - max-width: 1720px; - margin: 0 auto; - padding-top: 20px; - .sub-content-box { - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } +.sub-content{ + padding-top: 46px; + .sub-content-inner{ + max-width: 1720px; + margin: 0 auto; + padding-top: 20px; + .sub-content-box{ + margin-bottom: 20px; + &:last-child{ + margin-bottom: 0; + } + } } - } - &.estimate { - display: flex; - flex-direction: column; - height: calc(100% - 36.5px); - overflow-y: auto; - padding-top: 0; - .sub-content-inner { - flex: 1; - width: 100%; + &.estimate{ + display: flex; + flex-direction: column; + height: calc(100% - 36.5px); + overflow-y: auto; + padding-top: 0; + .sub-content-inner{ + flex: 1; + width: 100%; + } } - } } -.sub-table-box { - padding: 20px; - border-radius: 6px; - border: 1px solid #e9eaed; - background: #fff; - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - .table-box-title-wrap { - display: flex; - align-items: center; - margin-bottom: 15px; - .title-wrap { - display: flex; - align-items: center; - h3 { - display: block; - font-size: 15px; - color: #101010; - font-weight: 600; - margin-right: 14px; - } - .option { - padding-left: 5px; - font-size: 13px; - color: #101010; - font-weight: 400; - } - .info-wrap { +.sub-table-box{ + padding: 20px; + border-radius: 6px; + border: 1px solid #E9EAED; + background: #FFF; + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + .table-box-title-wrap{ display: flex; align-items: center; - li { - position: relative; - padding: 0 6px; - font-size: 12px; - color: #101010; - font-weight: normal; - span { - font-weight: 600; - &.red { - color: #e23d70; + margin-bottom: 15px; + .title-wrap{ + display: flex; + align-items: center; + h3{ + display: block; + font-size: 15px; + color: #101010; + font-weight: 600; + margin-right: 14px; + &.product{ + margin-right: 10px; + } } - } - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 11px; - background-color: #d9d9d9; - } - &:first-child { - padding-left: 0; - } - &:last-child { - padding-right: 0; - &::after { - display: none; + .product_tit{ + position: relative; + font-size: 15px; + font-weight: 600; + color: #1083E3; + padding-left: 10px; + &::before{ + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 1px; + height: 11px; + background-color: #D9D9D9; + } + } + .option{ + padding-left: 5px; + font-size: 13px; + color: #101010; + font-weight: 400; + } + .info-wrap{ + display: flex; + align-items: center; + li{ + position: relative; + padding: 0 6px; + font-size: 12px; + color: #101010; + font-weight: normal; + span{ + font-weight: 600; + &.red{ + color: #E23D70; + } + } + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 11px; + background-color: #D9D9D9; + } + &:first-child{padding-left: 0;} + &:last-child{padding-right: 0;&::after{display: none;}} + } } - } } - } } - } - .left-unit-box { - margin-left: auto; - display: flex; - align-items: center; - } - .promise-gudie { - display: block; - font-size: 13px; - font-weight: 700; - color: #101010; - margin-bottom: 20px; - } - .important { - color: #f00; - } - .sub-center-footer { - display: flex; - align-items: center; - justify-content: center; - margin-top: 20px; - } - .sub-right-footer { - display: flex; - align-items: center; - justify-content: flex-end; - margin-top: 20px; - } - .pagination-wrap { - margin-top: 24px; - } + .left-unit-box{ + margin-left: auto; + display: flex; + align-items: center; + } + .promise-gudie{ + display: block; + font-size: 13px; + font-weight: 700; + color: #101010; + margin-bottom: 20px; + } + .important{ + color: #f00; + } + .sub-center-footer{ + display: flex; + align-items: center; + justify-content: center; + margin-top: 20px; + } + .sub-right-footer{ + display: flex; + align-items: center; + justify-content: flex-end; + margin-top: 20px; + } + .pagination-wrap{ + margin-top: 24px; + } } -.infomation-wrap { - margin-bottom: 30px; +.infomation-wrap{ + margin-bottom: 30px; } -.infomation-box-wrap { - display: flex; - align-items: center; - gap: 10px; - .sub-table-box { - flex: 1; - } - .info-title { - font-size: 14px; - font-weight: 500; - color: #344356; - margin-bottom: 10px; - } - .info-inner { - position: relative; - font-size: 13px; - color: #344356; - .copy-ico { - position: absolute; - bottom: 0; - right: 0; - width: 16px; - height: 16px; - background: url(../../public/static/images/sub/copy_ico.svg) no-repeat center; - background-size: cover; +.infomation-box-wrap{ + display: flex; + align-items: center; + gap: 10px; + .sub-table-box{ + flex: 1 ; + } + .info-title{ + font-size: 14px; + font-weight: 500; + color: #344356; + margin-bottom: 10px; + } + .info-inner{ + position: relative; + font-size: 13px; + color: #344356; + .copy-ico{ + position: absolute; + bottom: 0; + right: 0; + width: 16px; + height: 16px; + background: url(../../public/static/images/sub/copy_ico.svg)no-repeat center; + background-size: cover; + } } - } } // 견적서 -.estimate-list-wrap { - display: flex; - align-items: center; - margin-bottom: 10px; - .estimate-box { - flex: 1; +.estimate-list-wrap{ display: flex; align-items: center; - &:last-child { - flex: none; - min-width: 220px; + margin-bottom: 10px; + &.one{ + .estimate-box{ + &:last-child{ + min-width: unset; + } + } } - .estimate-tit { - width: 105px; - height: 30px; - line-height: 30px; - background-color: #f4f4f7; - border-radius: 100px; - text-align: center; - font-size: 13px; - font-weight: 500; - color: #344356; + .estimate-box{ + flex: 1 ; + display: flex; + align-items: center; + &:last-child{ + flex: none; + min-width: 220px; + } + .estimate-tit{ + width: 105px; + height: 30px; + line-height: 30px; + background-color: #F4F4F7; + border-radius: 100px; + text-align: center; + font-size: 13px; + font-weight: 500; + color: #344356; + } + .estimate-name{ + font-size: 13px; + color: #344356; + margin-left: 14px; + font-weight: 400; + &.blue{ + font-size: 16px; + font-weight: 700; + color: #1083E3; + } + &.red{ + font-size: 16px; + font-weight: 700; + color: #D72A2A; + } + } } - .estimate-name { - font-size: 13px; - color: #344356; - margin-left: 14px; - font-weight: 400; + &:last-child{ + margin-bottom: 0; } - } - &:last-child { - margin-bottom: 0; - } } // file drag box -.drag-file-box { - padding: 10px; - .btn-area { - padding-bottom: 15px; - border-bottom: 1px solid #ecf0f4; - } - .drag-file-area { - position: relative; - margin-top: 15px; - p { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - font-size: 13px; - color: #ccc; - font-weight: 400; - cursor: default; +.drag-file-box{ + padding: 10px; + .btn-area{ + padding-bottom: 15px; + border-bottom: 1px solid #ECF0F4; } - } - .file-list { - .file-item { - margin-bottom: 15px; - span { + .drag-file-area{ position: relative; - font-size: 13px; - color: #45576f; - font-weight: 400; - white-space: nowrap; - padding-right: 55px; - button { - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 15px; - height: 15px; - background: url(../../public/static/images/sub/file_delete.svg) no-repeat center; - background-size: cover; + margin-top: 15px; + p{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 13px; + color: #ccc; + font-weight: 400; + cursor: default; } - } - &:last-child { - margin-bottom: 0; - } } - } + .file-list{ + .file-item{ + margin-bottom: 15px; + span{ + position: relative; + font-size: 13px; + color: #45576F; + font-weight: 400; + white-space: nowrap; + padding-right: 55px; + button{ + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 15px; + height: 15px; + background: url(../../public/static/images/sub/file_delete.svg)no-repeat center; + background-size: cover; + } + } + &:last-child{ + margin-bottom: 0; + } + } + } +} + +.special-note-check-wrap{ + display: grid; + grid-template-columns: repeat(5, 1fr); + border: 1px solid #ECF0F4; + border-radius: 3px; + margin-bottom: 30px; + .special-note-check-item{ + padding: 14px 10px; + border-right: 1px solid #ECF0F4; + border-top: 1px solid #ECF0F4; + &:nth-child(5n){ + border-right: none; + } + &:nth-child(-n+5){ + border-top: none; + } + &.act{ + background-color: #F7F9FA; + } + } +} + +.calculation-estimate{ + border: 1px solid #ECF0F4; + border-radius: 3px; + padding: 24px; + max-height: 350px; + overflow-y: auto; + margin-bottom: 30px; + dl{ + margin-bottom: 35px; + &:last-child{ + margin-bottom: 0; + } + dt{ + font-size: 13px; + font-weight: 600; + color: #1083E3; + margin-bottom: 15px; + } + dd{ + font-size: 12px; + font-weight: 400; + color: #45576F; + margin-bottom: 5px; + } + } + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: #d9dee2; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } +} +.esimate-wrap{ + margin-bottom: 20px; +} + +.estimate-product-option{ + display: flex; + align-items: center; + margin-bottom: 15px; + .product-price-wrap{ + display: flex; + align-items: center; + .product-price-tit{ + font-size: 13px; + font-weight: 400; + color: #45576F; + margin-right: 10px; + } + .select-wrap{ + width: 110px; + } + } + .product-edit-wrap{ + display: flex; + align-items: center; + margin-left: auto; + .product-edit-explane{ + display: flex; + align-items: center; + margin-right: 15px; + .attachment-required{ + position: relative; + display: flex; + align-items: center; + font-size: 12px; + font-weight: 400; + color: #45576F; + padding-right: 10px; + .ico{ + width: 23px; + height: 23px; + margin-right: 5px; + background: url(../../public/static/images/sub/attachment_ico.svg)no-repeat center; + background-size: cover; + } + &::before{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 12px; + background-color: #D9D9D9; + } + } + .click-check{ + display: flex; + align-items: center; + font-size: 12px; + font-weight: 400; + color: #F16A6A ; + padding-left: 10px; + .ico{ + width: 14px; + height: 14px; + margin-right: 5px; + background: url(../../public/static/images/sub/click_check_ico.svg)no-repeat center; + background-size: cover; + } + } + } + .product-edit-btn{ + display: flex; + align-items: center; + button{ + display: flex; + align-items: center; + span{ + width: 13px; + height: 13px; + margin-right: 5px; + background-size: cover; + &.plus{ + background: url(../../public/static/images/sub/plus_btn.svg)no-repeat center; + } + &.minus{ + background: url(../../public/static/images/sub/minus_btn.svg)no-repeat center; + } + } + } + } + } + } // 발전시물레이션 -.chart-wrap { - display: flex; - gap: 20px; - width: 100%; - .sub-table-box { - height: 100%; - } - .chart-inner { - flex: 1; - .chart-box { - margin-bottom: 30px; - } - } - .chart-table-wrap { +.chart-wrap{ display: flex; - flex-direction: column; - flex: none; - width: 650px; - .sub-table-box { - flex: 1; - &:first-child { - margin-bottom: 20px; - } + gap: 20px; + width: 100%; + .sub-table-box{ + height: 100%; + } + .chart-inner{ + flex: 1; + .chart-box{ + margin-bottom: 30px; + } + } + .chart-table-wrap{ + display: flex; + flex-direction: column; + flex: none; + width: 650px; + .sub-table-box{ + flex: 1; + &:first-child{ + margin-bottom: 20px; + } + } } - } } -.chart-month-table { - table { - table-layout: fixed; - border-collapse: collapse; - border: 1px solid #ecf0f4; - border-radius: 4px; - thead { - th { - padding: 4.5px 0; - border-bottom: 1px solid #ecf0f4; +.chart-month-table{ + table{ + table-layout: fixed; + border-collapse:collapse; + border: 1px solid #ECF0F4; + border-radius: 4px; + thead{ + th{ + padding: 4.5px 0; + border-bottom: 1px solid #ECF0F4; + text-align: center; + font-size: 13px; + color: #45576F; + font-weight: 500; + background-color: #F8F9FA; + } + } + tbody{ + td{ + font-size: 13px; + color: #45576F; + text-align: center; + padding: 4.5px 0; + } + } + } +} + +.simulation-guide-wrap{ + display: flex; + padding: 20px; + .simulation-tit-wrap{ + padding-right: 40px; + border-right: 1px solid #EEEEEE; + span{ + display: block; + position: relative; + padding-left: 60px; + font-size: 15px; + color: #14324F; + font-weight: 600; + &::before{ + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 40px; + height: 40px; + background: url(../../public/static/images/sub/simulation_guide.svg)no-repeat center; + background-size: cover; + } + } + } + .simulation-guide-box{ + padding-left: 40px; + dl{ + margin-bottom: 25px; + dt{ + font-size: 13px; + color: #101010; + font-weight: 600; + margin-bottom: 5px; + } + dd{ + font-size: 12px; + color: #45576F; + font-weight: 400; + line-height: 24px; + } + &:last-child{ + margin-bottom: 0; + } + } + } +} + +.module-total{ + display: flex; + align-items: center; + background-color: #F8F9FA; + padding: 9px 0; + margin-right: 4px; + border: 1px solid #ECF0F4; + border-top: none; + .total-title{ + flex: 1; text-align: center; font-size: 13px; - color: #45576f; + color: #344356; font-weight: 500; - background-color: #f8f9fa; - } } - tbody { - td { - font-size: 13px; - color: #45576f; + .total-num{ + flex: none; + width: 121px; text-align: center; - padding: 4.5px 0; - } + font-size: 15px; + color: #344356; + font-weight: 500; } - } -} - -.simulation-guide-wrap { - display: flex; - padding: 20px; - .simulation-tit-wrap { - padding-right: 40px; - border-right: 1px solid #eeeeee; - span { - display: block; - position: relative; - padding-left: 60px; - font-size: 15px; - color: #14324f; - font-weight: 600; - &::before { - content: ''; - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); - width: 40px; - height: 40px; - background: url(../../public/static/images/sub/simulation_guide.svg) no-repeat center; - background-size: cover; - } - } - } - .simulation-guide-box { - padding-left: 40px; - dl { - margin-bottom: 25px; - dt { - font-size: 13px; - color: #101010; - font-weight: 600; - margin-bottom: 5px; - } - dd { - font-size: 12px; - color: #45576f; - font-weight: 400; - line-height: 24px; - } - &:last-child { - margin-bottom: 0; - } - } - } -} - -.module-total { - display: flex; - align-items: center; - background-color: #f8f9fa; - padding: 9px 0; - margin-right: 4px; - border: 1px solid #ecf0f4; - border-top: none; - .total-title { - flex: 1; - text-align: center; - font-size: 13px; - color: #344356; - font-weight: 500; - } - .total-num { - flex: none; - width: 121px; - text-align: center; - font-size: 15px; - color: #344356; - font-weight: 500; - } } // 물건상세 -.information-help-wrap { - display: flex; - padding: 24px; - background-color: #f4f4f4; - border-radius: 4px; - margin-bottom: 15px; - .information-help-tit-wrap { - position: relative; +.information-help-wrap{ display: flex; - align-items: center; - padding-right: 40px; - border-right: 1px solid #e0e0e3; - .help-tit-icon { - width: 40px; - height: 40px; - border-radius: 50%; - margin-right: 10px; - background: #fff url(../../public/static/images/sub/information_help.svg) no-repeat center; - background-size: 20px 20px; + padding: 24px; + background-color: #F4F4F4; + border-radius: 4px; + margin-bottom: 15px; + .information-help-tit-wrap{ + position: relative; + display: flex; + align-items: center; + padding-right: 40px; + border-right: 1px solid #E0E0E3; + .help-tit-icon{ + width: 40px; + height: 40px; + border-radius: 50%; + margin-right: 10px; + background: #fff url(../../public/static/images/sub/information_help.svg)no-repeat center; + background-size: 20px 20px; + } + .help-tit{ + font-size: 13px; + font-weight: 600; + color: #45576F; + } } - .help-tit { - font-size: 13px; - font-weight: 600; - color: #45576f; + .information-help-guide{ + padding-left: 40px; + span{ + display: block; + font-size: 12px; + font-weight: 400; + color: #45576F; + margin-bottom: 7px; + &:last-child{ + margin-bottom: 0; + } + } } - } - .information-help-guide { - padding-left: 40px; - span { - display: block; - font-size: 12px; - font-weight: 400; - color: #45576f; - margin-bottom: 7px; - &:last-child { - margin-bottom: 0; - } - } - } -} +} \ No newline at end of file diff --git a/src/styles/_grid-detail.scss b/src/styles/_grid-detail.scss index a673236a..4cf9d3b2 100644 --- a/src/styles/_grid-detail.scss +++ b/src/styles/_grid-detail.scss @@ -36,6 +36,9 @@ &:nth-child(2n){ background-color: #F7F9FA; } + &.important_row{ + background-color: #e7e7e7; + } } .ag-cell{ font-size: 13px; diff --git a/src/styles/_main.scss b/src/styles/_main.scss index e80d8b83..37170a8b 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -1,687 +1,652 @@ // background img -.background-bord { - position: absolute; - top: 46px; - left: 0; - width: 100%; - height: 280px; - background: url(../../public/static/images/main/main_background.png) no-repeat center; - background-size: cover; - z-index: 0; +.background-bord{ + position: absolute; + top: 46px; + left: 0; + width: 100%; + height: 280px; + background: url(../../public/static/images/main/main_background.png)no-repeat center; + background-size: cover; + z-index: 0; } // main-wrap -.main-contents { - position: relative; - z-index: 1; - padding-bottom: 15px; +.main-contents{ + position: relative; + z-index: 1; + padding-bottom: 15px; } // contents -.store-id-wrap { - display: flex; - align-items: center; - justify-content: center; - gap: 12px; - padding: 33.5px 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.08); - background-color: rgba(255, 255, 255, 0.05); - .store-id-title { - position: relative; - padding-left: 32px; - font-size: 13px; - color: #fff; - &::before { - content: ''; - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); - width: 20px; - height: 20px; - background: url(../../public/static/images/main/id_icon.svg) no-repeat center; - } - } - .store-arr { - display: block; - width: 7px; - height: 10px; - background: url(../../public/static/images/main/store-arr.svg) no-repeat center; - } - .store-id-name { - font-size: 16px; - color: #fff; - font-weight: 600; - } -} - -// main-search-form -.main-search-wrap { - display: flex; - align-items: center; - justify-content: center; - padding: 45px 0; - .search-raido-wrap { +.store-id-wrap{ display: flex; align-items: center; - gap: 16px; - margin-right: 30px; - } -} -.search-input-box { - display: flex; - align-items: center; - width: 580px; - height: 45px; - border-radius: 100px; - padding: 0 20px; - border: 1px solid rgba(255, 255, 255, 0.3); - background: rgba(31, 31, 31, 0.3); - .main-search { - flex: 1; - height: 100%; - font-size: 13px; - color: #fff; - background-color: transparent; - outline: none; - border: none; - font-family: 'Noto Sans JP', sans-serif; - } - .search-icon { - width: 20px; - height: 100%; - background-image: url(../../public/static/images/main/main_search.svg); - background-repeat: no-repeat; - background-position: center; - background-size: 21px 21px; - } -} - -// main-contents-inner -.main-product-list-wrap { - max-width: 1400px; - margin: 0 auto; - .main-product-list { - display: flex; - gap: 24px; - margin-bottom: 24px; - .product-item { - display: flex; - flex-direction: column; - padding: 40px; - border-radius: 6px; - background: #fff; - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - &.item01 { - flex: 1; - max-height: 400px; - } - &.item02 { - flex: none; - width: 451px; - max-height: 400px; - } - &.item03 { - flex: 1; - } - &.item04 { - flex: none; - width: 351px; - } - &.item05 { - flex: none; - width: 451px; - } - .product-item-title-wrap { - display: flex; - align-items: center; - .product-item-title { - display: flex; - align-items: center; - font-size: 16px; - color: #101010; - font-weight: 600; - .item-logo { - display: block; - width: 40px; - height: 40px; - border-radius: 50px; - background: #14324f; - margin-right: 12px; - background-repeat: no-repeat; - background-size: 22px 22px; - background-position: center; - &.ico01 { - background-image: url(../../public/static/images/main/product_ico01.svg); - } - &.ico02 { - background-image: url(../../public/static/images/main/product_ico02.svg); - } - &.ico03 { - background-image: url(../../public/static/images/main/product_ico03.svg); - } - &.ico04 { - background-image: url(../../public/static/images/main/product_ico04.svg); - } - &.ico05 { - background-image: url(../../public/static/images/main/product_ico05.svg); - } - } - } - .more-btn { - display: block; - width: 20px; - height: 20px; - margin-left: auto; - background: url(../../public/static/images/main/more_btn.svg) no-repeat center; - } - } - .product-item-content { - margin-top: 30px; - overflow: hidden; - .recently-list { - .recently-item { - border: 1px solid #f2f2f2; - background-color: transparent; - padding: 29.9px 20px; - margin-bottom: 5px; - cursor: pointer; - .item-inner { - display: flex; - align-items: center; - span { - position: relative; - display: block; - font-size: 13px; - color: #101010; - font-weight: 400; - padding: 0 10px; - &.time { - padding-left: 22px; - &::before { - content: ''; - position: absolute; - top: 50%; - left: 0; - transform: translateY(-50%); - width: 14px; - height: 14px; - background: url(../../public/static/images/main/clock.svg) no-repeat center; - background-size: cover; - } - } - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 1px; - height: 10px; - background-color: #bbb; - } - &:last-child { - &:after { - display: none; - } - } - } - } - &:last-child { - margin-bottom: 5px; - } - } - } - .notice-box { - height: 100%; - overflow-y: auto; - .notice-day { - font-size: 13px; - color: #666; - font-weight: 400; - margin-bottom: 7px; - } - .notice-title { - font-size: 14px; - color: #101010; - font-weight: 600; - margin-bottom: 25px; - line-height: 24px; - word-break: keep-all; - } - .notice-contents { - font-size: 12px; - color: #666; - font-weight: 400; - line-height: 22px; - span { - position: relative; - display: block; - padding-left: 10px; - &::before { - content: ''; - position: absolute; - top: 10px; - left: 3px; - width: 3px; - height: 3px; - border-radius: 100%; - background-color: #666; - } - } - } - &::-webkit-scrollbar { - width: 4px; /* 스크롤바의 너비 */ - } - &::-webkit-scrollbar-thumb { - background: #697c8f; /* 스크롤바의 색상 */ - } - &::-webkit-scrollbar-track { - background: transparent; /*스크롤바 뒷 배경 색상*/ - } - } - .faq-item { - position: relative; - margin-bottom: 10px; - cursor: pointer; - .faq-item-inner { - display: flex; - align-items: center; - - .faq-num { - flex: none; - padding: 7px 12.5px; - font-size: 13px; - color: #101010; - font-weight: 600; - border-radius: 110px; - border: 1px solid rgba(242, 242, 242, 0.95); - margin-right: 20px; - } - .faq-title { - width: 0; - flex: 1 1 auto; - font-size: 13px; - color: #101010; - font-weight: 500; - padding-right: 96px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .faq-day { - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - font-size: 13px; - color: #101010; - font-weight: 400; - } - } - &:last-child { - margin-bottom: 0; - } - } - .data-download-wrap { - width: 100%; - .data-down { - display: block; - width: 100%; - padding: 20px; - text-align: left; - border-radius: 4px; - background-color: #697c8f; - margin-bottom: 5px; - transition: background 0.17s ease-in-out; - span { - position: relative; - display: block; - padding-right: 30px; - font-size: 13px; - color: #fff; - font-weight: 400; - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 18px; - height: 16px; - background: url(../../public/static/images/main/download.svg) no-repeat center; - background-size: cover; - } - } - &:last-child { - margin-bottom: 0; - } - &:hover { - background-color: #859eb6; - } - } - } - .contact-info-list { - padding: 25px 30px; - border-radius: 4px; - background-color: #f4f4f7; - .info-item { - display: flex; - align-items: center; - padding: 15px 0; - border-bottom: 1px solid #fff; - &:first-child { - padding-top: 0; - } - &:last-child { - padding-bottom: 0; - border: none; - } - .icon-box { - display: flex; - margin-right: 12px; - } - .infor-data { - font-size: 13px; - color: #101010; - font-weight: 500; - } - } - } - } - } - &:last-child { - margin-bottom: 0; - } - } -} - -// loginpage -.login-wrap { - position: relative; - width: 100%; - min-height: 100vh; - display: flex; - flex-direction: column; - justify-content: center; - background: url(../../public/static/images/main/login_bg.png) no-repeat center; - background-size: cover; - .login-inner { - max-width: 500px; - width: 100%; - margin: 0 auto; - .login-logo { - display: block; - margin-bottom: 25px; - } - .login-input-frame { - padding: 40px 50px; - border-radius: 6px; - background: rgba(255, 255, 255, 0.97); - box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); - .login-frame-tit { - font-size: 18px; - color: #364864; - font-weight: 400; - padding-bottom: 30px; - border-bottom: 1px solid #e5e9ef; - span { - display: block; - font-weight: 600; - margin-bottom: 5px; - } - &.pw-reset { - font-size: 13px; - } - } - .login-input-wrap { - margin-top: 30px; - .login-area { - position: relative; - display: flex; - align-items: center; - border: 1px solid #e5e9ef; - height: 45px; - padding-left: 40px; - padding-right: 15px; - margin-bottom: 15px; - .login-input { - flex: 1; - height: 100%; - background-color: transparent; - font-size: 13px; - font-weight: 400; - color: #6c819c; - &::placeholder { - font-size: 13px; - font-weight: 400; - color: #d1d7e0; - } - } - &::before { + justify-content: center; + gap: 12px; + padding: 33.5px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + background-color: rgba(255, 255, 255, 0.05); + .store-id-title{ + position: relative; + padding-left: 32px; + font-size: 13px; + color: #fff; + &::before{ content: ''; position: absolute; top: 50%; - left: 15px; + left: 0; transform: translateY(-50%); - width: 10px; - height: 12px; - background-size: cover; - } - button { width: 20px; - height: 100%; - background-repeat: no-repeat; - background-position: center; - } - &.id { - &::before { - background: url(../../public/static/images/main/login_id.svg) no-repeat center; - } - .id-delete { - background-image: url(../../public/static/images/main/id_delete.svg); - background-size: 17px 17px; - } - } - &.email { - &::before { - background: url(../../public/static/images/main/login_email.svg) no-repeat center; - width: 12px; - height: 9px; - } - .id-delete { - background-image: url(../../public/static/images/main/id_delete.svg); - background-size: 17px 17px; - } - } - &.password { - margin-bottom: 20px; - &::before { - background: url(../../public/static/images/main/login_password.svg) no-repeat center; - } - .password-hidden { - background-image: url(../../public/static/images/main/password_hidden.svg); - background-size: 19px 13px; - &.visible { - background-image: url(../../public/static/images/main/password_visible.svg); - } - } - } + height: 20px; + background: url(../../public/static/images/main/id_icon.svg)no-repeat center; } - .login-btn { - display: block; - width: 100%; - height: 45px; - background-color: #5c6773; - color: #fff; - font-size: 15px; - font-weight: 600; - border-radius: 4px; - transition: background 0.15s ease-in-out; - &:hover { - background-color: #717e8d; - } - &.light { - background-color: #fff; - border: 1px solid #5c6773; - color: #5c6773; - } - } - .login-btn-box { - margin-bottom: 20px; - } - .pwreset-btn-box { - display: flex; - } - .reset-password { - width: 100%; - text-align: center; - button { - position: relative; - font-size: 13px; - color: #364864; - font-weight: 400; - padding-right: 16px; - &::before { - content: ''; - position: absolute; - top: calc(50% + 1px); - right: 0; - transform: translateY(-50%); - width: 6px; - height: 8px; - background: url(../../public/static/images/main/login-arr.svg) no-repeat center; - } - } - } - } } - .login-guide-wrap { - position: relative; - margin-left: 10px; - margin-top: 30px; - padding-left: 15px; - font-size: 13px; - color: #fff; - line-height: 24px; - a { + .store-arr{ + display: block; + width: 7px; + height: 10px; + background: url(../../public/static/images/main/store-arr.svg) no-repeat center; + } + .store-id-name{ + font-size: 16px; color: #fff; font-weight: 600; - text-decoration: underline; - } - span { - position: absolute; - top: 0; - left: 0; - } } - } - .login-copyright { - position: absolute; - bottom: 40px; - left: 50%; - transform: translateX(-50%); - font-size: 11px; - color: #fff; - font-weight: 500; - } } -.d-check-box { - &.login { - margin-bottom: 25px; - label { - padding-left: 20px; - color: #364864; - &:before { - width: 22px; - height: 22px; - top: -1px; - border-color: #a8b6c7; - border-radius: 3px; - transition: background 0.05s ease-in-out; - } +// main-search-form +.main-search-wrap{ + display: flex; + align-items: center; + justify-content: center; + padding: 45px 0; + .search-raido-wrap{ + display: flex; + align-items: center; + gap: 16px; + margin-right: 30px; + } +} +.search-input-box{ + display: flex; + align-items: center; + width: 580px; + height: 45px; + border-radius: 100px; + padding: 0 20px; + border: 1px solid rgba(255, 255, 255, 0.30); + background: rgba(31, 31, 31, 0.30); + .main-search{ + flex: 1; + height: 100%; + font-size: 13px; + color: #fff; + background-color: transparent; + outline: none; + border: none; + font-family: 'Noto Sans JP', sans-serif; + } + .search-icon{ + width: 20px; + height: 100%; + background-image: url(../../public/static/images/main/main_search.svg); + background-repeat: no-repeat; + background-position: center; + background-size: 21px 21px; + } +} + +// main-contents-inner +.main-product-list-wrap{ + max-width: 1400px; + margin: 0 auto; + .main-product-list{ + display: flex; + gap: 24px; + margin-bottom: 24px; + .product-item{ + display: flex; + flex-direction: column; + padding: 40px; + border-radius: 6px; + background: #FFF; + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + &.item01{flex: 1; max-height: 400px;} + &.item02{flex: none; width: 451px; max-height: 400px;} + &.item03{flex: 1;} + &.item04{flex: none; width: 351px;} + &.item05{flex: none; width: 451px;} + .product-item-title-wrap{ + display: flex; + align-items: center; + .product-item-title{ + display: flex; + align-items: center; + font-size: 16px; + color: #101010; + font-weight: 600; + .item-logo{ + display: block; + width: 40px; + height: 40px; + border-radius: 50px; + background: #14324F; + margin-right: 12px; + background-repeat: no-repeat; + background-size: 22px 22px; + background-position: center; + &.ico01{background-image: url(../../public/static/images/main/product_ico01.svg);} + &.ico02{background-image: url(../../public/static/images/main/product_ico02.svg);} + &.ico03{background-image: url(../../public/static/images/main/product_ico03.svg);} + &.ico04{background-image: url(../../public/static/images/main/product_ico04.svg);} + &.ico05{background-image: url(../../public/static/images/main/product_ico05.svg);} + } + } + .more-btn{ + display: block; + width: 20px; + height: 20px; + margin-left: auto; + background: url(../../public/static/images/main/more_btn.svg)no-repeat center; + } + } + .product-item-content{ + margin-top: 30px; + overflow: hidden; + .recently-list{ + .recently-item{ + border: 1px solid #F2F2F2; + background-color: transparent; + padding: 29.9px 20px; + margin-bottom: 5px; + cursor: pointer; + .item-inner{ + display: flex; + align-items: center; + span{ + position: relative; + display: block; + font-size: 13px; + color: #101010; + font-weight: 400; + padding: 0 10px; + &.time{ + padding-left: 22px; + &::before{ + content: ''; + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 14px; + height: 14px; + background:url(../../public/static/images/main/clock.svg)no-repeat center; + background-size: cover; + } + } + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 1px; + height: 10px; + background-color: #BBB; + } + &:last-child{ + &:after{ + display: none; + } + } + } + } + &:last-child{ + margin-bottom: 5px; + } + } + } + .notice-box{ + height: 100%; + overflow-y: auto; + .notice-day{ + font-size: 13px; + color: #666; + font-weight: 400; + margin-bottom: 7px; + } + .notice-title{ + font-size: 14px; + color: #101010; + font-weight: 600; + margin-bottom: 25px; + line-height: 24px; + word-break: keep-all; + } + .notice-contents{ + font-size: 12px; + color: #666; + font-weight: 400; + line-height: 22px; + span{ + position: relative; + display: block; + padding-left: 10px; + &::before{ + content: ''; + position: absolute; + top: 10px; + left: 3px; + width: 3px; + height: 3px; + border-radius: 100%; + background-color: #666; + } + } + } + &::-webkit-scrollbar {width: 4px; /* 스크롤바의 너비 */} + &::-webkit-scrollbar-thumb {background: #697C8F; /* 스크롤바의 색상 */} + &::-webkit-scrollbar-track {background: transparent; /*스크롤바 뒷 배경 색상*/} + } + .faq-item{ + position: relative; + margin-bottom: 10px; + cursor: pointer; + .faq-item-inner{ + display: flex; + align-items: center; + + .faq-num{ + flex: none; + padding: 7px 12.5px; + font-size: 13px; + color: #101010; + font-weight: 600; + border-radius: 110px; + border: 1px solid rgba(242, 242, 242, 0.95); + margin-right: 20px; + } + .faq-title{ + width: 0; + flex: 1 1 auto; + font-size: 13px; + color: #101010; + font-weight: 500; + padding-right: 96px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .faq-day{ + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + font-size: 13px; + color: #101010; + font-weight: 400; + } + } + &:last-child{ + margin-bottom: 0; + } + } + .data-download-wrap{ + width: 100%; + .data-down{ + display: block; + width: 100%; + padding: 20px; + text-align: left; + border-radius: 4px; + background-color: #697C8F; + margin-bottom: 5px; + transition: background .17s ease-in-out; + span{ + position: relative; + display: block; + padding-right: 30px; + font-size: 13px; + color: #fff; + font-weight: 400; + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 18px; + height: 16px; + background: url(../../public/static/images/main/download.svg)no-repeat center; + background-size: cover; + } + } + &:last-child{ + margin-bottom: 0; + } + &:hover{ + background-color: #859eb6; + } + } + } + .contact-info-list{ + padding: 25px 30px; + border-radius: 4px; + background-color: #F4F4F7; + .info-item{ + display: flex; + align-items: center; + padding: 15px 0; + border-bottom: 1px solid #fff; + &:first-child{padding-top: 0;} + &:last-child{padding-bottom: 0; border: none;} + .icon-box{ + display: flex; + margin-right: 12px; + } + .infor-data{ + font-size: 13px; + color: #101010; + font-weight: 500; + } + } + } + } + } + &:last-child{ + margin-bottom: 0; + } + } +} + +// loginpage +.login-wrap{ + position: relative; + width: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + background: url(../../public/static/images/main/login_bg.png) no-repeat center; + background-size: cover; + .login-inner{ + max-width: 500px; + width: 100%; + margin: 0 auto; + .login-logo{ + display: block; + margin-bottom: 25px; + } + .login-input-frame{ + padding: 40px 50px; + border-radius: 6px; + background: rgba(255, 255, 255, 0.97); + box-shadow: 0px 3px 30px 0px rgba(0, 0, 0, 0.02); + .login-frame-tit{ + font-size: 18px; + color: #364864; + font-weight: 400; + padding-bottom: 30px; + border-bottom: 1px solid #E5E9EF; + span{ + display: block; + font-weight: 600; + margin-bottom: 5px; + } + &.pw-reset{ + font-size: 13px; + } + } + .login-input-wrap{ + margin-top: 30px; + .login-area{ + position: relative; + display: flex; + align-items: center; + border: 1px solid #E5E9EF; + height: 45px; + padding-left: 40px; + padding-right: 15px; + margin-bottom: 15px; + .login-input{ + flex: 1; + height: 100%; + background-color: transparent; + font-size: 13px; + font-weight: 400; + color: #6c819c; + &::placeholder{ + font-size: 13px; + font-weight: 400; + color: #D1D7E0; + } + } + &::before{ + content: ''; + position: absolute; + top: 50%; + left: 15px; + transform: translateY(-50%); + width: 10px; + height: 12px; + background-size: cover; + } + button{ + width: 20px; + height: 100%; + background-repeat: no-repeat; + background-position: center; + } + &.id{ + &::before{ + background: url(../../public/static/images/main/login_id.svg)no-repeat center; + } + .id-delete{ + background-image: url(../../public/static/images/main/id_delete.svg); + background-size: 17px 17px; + } + } + &.email{ + &::before{ + background: url(../../public/static/images/main/login_email.svg)no-repeat center; + width: 12px; + height: 9px; + } + .id-delete{ + background-image: url(../../public/static/images/main/id_delete.svg); + background-size: 17px 17px; + } + } + &.password{ + margin-bottom: 20px; + &::before{ + background: url(../../public/static/images/main/login_password.svg)no-repeat center; + } + .password-hidden{ + background-image: url(../../public/static/images/main/password_hidden.svg); + background-size: 19px 13px; + &.visible{ + background-image: url(../../public/static/images/main/password_visible.svg); + } + } + } + } + .login-btn{ + display: block; + width: 100%; + height: 45px; + background-color: #5C6773; + color: #fff; + font-size: 15px; + font-weight: 600; + border-radius: 4px; + transition: background .15s ease-in-out; + &:hover{ + background-color: #717e8d; + } + &.light{ + background-color: #fff; + border: 1px solid #5C6773; + color: #5C6773; + } + } + .login-btn-box{ + margin-bottom: 20px; + } + .pwreset-btn-box{ + display: flex; + } + .reset-password{ + width: 100%; + text-align: center; + button{ + position: relative; + font-size: 13px; + color: #364864; + font-weight: 400; + padding-right: 16px; + &::before{ + content: ''; + position: absolute; + top: calc(50% + 1px); + right: 0; + transform: translateY(-50%); + width: 6px; + height: 8px; + background: url(../../public/static/images/main/login-arr.svg)no-repeat center; + } + } + } + } + } + .login-guide-wrap{ + position: relative; + margin-left: 10px; + margin-top: 30px; + padding-left: 15px; + font-size: 13px; + color: #fff; + line-height: 24px; + a{ + color: #fff; + font-weight: 600; + text-decoration: underline; + } + span{ + position: absolute; + top: 0; + left: 0; + } + } + } + .login-copyright{ + position: absolute; + bottom: 40px; + left: 50%; + transform: translateX(-50%); + font-size: 11px; + color: #fff; + font-weight: 500; + } +} + +.d-check-box{ + &.login{ + margin-bottom: 25px; + label{ + padding-left: 20px; + color: #364864; + &:before{ + width: 22px; + height: 22px; + top: -1px; + border-color: #A8B6C7; + border-radius: 3px; + transition: background .05s ease-in-out; + } + } + } + input[type=checkbox]:checked + label::before{ + border-color: #A8B6C7; + background-color: #A8B6C7; + } + input[type=checkbox]:checked + label::after{ + border-color: #fff; + width: 7px; + height: 11px; + top: -2px; + left: 1px; } - } - input[type='checkbox']:checked + label::before { - border-color: #a8b6c7; - background-color: #a8b6c7; - } - input[type='checkbox']:checked + label::after { - border-color: #fff; - width: 7px; - height: 11px; - top: -2px; - left: 1px; - } } // 회원가입 -.center-page-wrap { - display: flex; - flex-direction: column; - justify-content: center; - width: 100%; - min-height: 100vh; - background-color: #f4f4f7; - overflow-x: hidden; - .center-page-inner { +.center-page-wrap{ + display: flex; + flex-direction: column; + justify-content: center; width: 100%; - max-width: 1720px; - margin: 0 auto; - .center-page-tit { - font-size: 18px; - font-weight: 600; - color: #101010; - margin-bottom: 24px; + min-height: 100vh; + background-color: #F4F4F7; + overflow-x: hidden; + .center-page-inner{ + width: 100%; + max-width: 1720px; + margin: 0 auto; + .center-page-tit{ + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 24px; + } + .sub-table-box{ + &.signup{ + margin-bottom: 20px; + } + } + .sign-up-btn-wrap{ + display: flex; + justify-content: flex-end; + } + &.complete{ + max-width: 1000px; + } } - .sub-table-box { - &.signup { - margin-bottom: 20px; - } - } - .sign-up-btn-wrap { - display: flex; - justify-content: flex-end; - } - &.complete { - max-width: 1000px; - } - } + } // 회원가입 완료 -.complete-box-wrap { - padding: 72px 80px; - .complete-tit { - font-size: 18px; - font-weight: 600; - color: #101010; - margin-bottom: 17px; - } - .complete-txt { - font-size: 13px; - font-weight: 400; - color: #101010; - margin-bottom: 27px; - } - .complete-email-wrap { - padding: 36px 30px; - border-radius: 2px; - background: #f4f4f7; - margin-bottom: 20px; - .email-info { - font-size: 13px; - font-weight: 400; - color: #000; - span { - color: #204af4; - font-weight: 500; - } +.complete-box-wrap{ + padding: 72px 80px; + .complete-tit{ + font-size: 18px; + font-weight: 600; + color: #101010; + margin-bottom: 17px; } - } - .complete-btn { - display: flex; - justify-content: flex-end; - } -} + .complete-txt{ + font-size: 13px; + font-weight: 400; + color: #101010; + margin-bottom: 27px; + } + .complete-email-wrap{ + padding: 36px 30px; + border-radius: 2px; + background: #F4F4F7; + margin-bottom: 20px; + .email-info{ + font-size: 13px; + font-weight: 400; + color: #000; + span{ + color: #204AF4; + font-weight: 500; + } + } + } + .complete-btn{ + display: flex; + justify-content: flex-end; + } +} \ No newline at end of file diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss index 579e1334..d70732b8 100644 --- a/src/styles/_modal.scss +++ b/src/styles/_modal.scss @@ -14,6 +14,7 @@ $alert-color: #101010; scale: 1; } } + @keyframes unmountpop { from { opacity: 1; @@ -30,6 +31,7 @@ $alert-color: #101010; font-weight: 400; color: #fff; } + .bold-font { font-size: 12px; font-weight: 500; @@ -46,51 +48,67 @@ $alert-color: #101010; border-radius: 4px; background-color: #272727; z-index: 9999999; + &.xxxm { width: 240px; } + &.xxm { width: 270px; } + &.xm { width: 300px; } + &.ssm { width: 380px; } + &.sm { width: 580px; } + &.r { width: 400px; } + &.lr { width: 440px; } + &.lrr { width: 480px; } + &.ml { width: 530px; } + &.l-2 { width: 640px; } + &.lx-2 { width: 740px; } + &.lx { width: 770px; } + &.l { width: 800px; } + &.mount { - animation: mountpop 0.17s ease-in-out forwards; + animation: mountpop .17s ease-in-out forwards; } + &.unmount { - animation: unmountpop 0.17s ease-in-out forwards; + animation: unmountpop .17s ease-in-out forwards; } + &.alert { position: absolute; top: 50%; @@ -98,21 +116,25 @@ $alert-color: #101010; transform: translate(-50%, -50%); background-color: transparent; border: none; + .modal-head { background-color: transparent; padding: 0 0 8px; + .modal-close { width: 20px; height: 20px; background: url(../../public/static/images/canvas/alert_close.svg) no-repeat center; } } + .modal-body { background-color: #fff; padding: 22px; border-radius: 4px; border: 1px solid #101010; color: $alert-color; + .alert-title { font-size: 13px; font-weight: 700; @@ -122,6 +144,7 @@ $alert-color: #101010; } } } + .modal-head { display: flex; align-items: center; @@ -133,6 +156,7 @@ $alert-color: #101010; color: $pop-color; font-weight: 700; } + .modal-close { margin-left: auto; color: transparent; @@ -142,50 +166,64 @@ $alert-color: #101010; background: url(../../public/static/images/canvas/modal_close.svg) no-repeat center; } } + .modal-body { padding: 24px; + .modal-btn-wrap { display: flex; align-items: center; gap: 5px; + button { flex: 1; } + &.sub { button { flex: 1 1 auto; padding: 0; } + margin-bottom: 14px; } } + .modal-check-btn-wrap { margin-top: 15px; + .check-wrap-title { font-size: $pop-normal-size; color: $pop-color; font-weight: 600; + &.light { font-weight: $pop-normal-weight; } } + .flex-check-box { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; + &.for2 { justify-content: flex-end; + button { width: calc(50% - 5px); } + &.btn { gap: 5px; + button { width: calc(50% - 2.5px); } } } + &.for-line { button { flex: 1; @@ -193,18 +231,22 @@ $alert-color: #101010; } } } + .outer-line-wrap { - border-top: 1px solid #3c3c3c; + border-top: 1px solid #3C3C3C; margin-top: 10px; padding-top: 15px; margin-bottom: 15px; + > div { margin-bottom: 15px; + &:last-child { margin-bottom: 0; } } } + .modal-guide { display: block; font-size: $pop-normal-size; @@ -216,15 +258,17 @@ $alert-color: #101010; .adsorption-point { display: flex; align-items: center; - background-color: #3a3a3a; + background-color: #3A3A3A; border-radius: 3px; padding-left: 11px; overflow: hidden; transition: all 0.17s ease-in-out; + span { font-size: $pop-normal-size; color: #898989; } + i { display: flex; align-items: center; @@ -234,10 +278,11 @@ $alert-color: #101010; font-size: 13px; color: #898989; } + &.act { i { color: $pop-color; - background-color: #1083e3; + background-color: #1083E3; } } } @@ -248,68 +293,83 @@ $alert-color: #101010; align-items: center; gap: 15px; padding-bottom: 15px; + &.border { border-bottom: 1px solid #424242; } } + .grid-option-wrap { .grid-option-box { display: flex; align-items: center; background-color: transparent; - border: 1px solid #3d3d3d; + border: 1px solid #3D3D3D; border-radius: 2px; padding: 15px 10px; gap: 20px; margin-bottom: 10px; + .grid-input-form { display: flex; align-items: center; + span { flex: none; font-size: $pop-normal-size; color: $pop-color; font-weight: $pop-bold-weight; } + .input-grid { width: 54px; + input { width: 100%; } } } + &:last-child { margin-bottom: 0; } } } + .select-form { .sort-select { width: 100%; } } + .grid-select { flex: 1; + &.no-flx { flex: unset; } + .sort-select { width: 100%; background-color: #313131; min-width: auto; font-size: 12px; border: none; + p { font-size: 12px; } + > ul { border: none; } } + &.right { p { text-align: right; } + ul { li { justify-content: flex-end; @@ -317,9 +377,11 @@ $alert-color: #101010; } } } + .grid-btn-wrap { padding-top: 15px; text-align: right; + button { padding: 0 10px; } @@ -331,13 +393,16 @@ $alert-color: #101010; color: $pop-color; font-weight: $pop-normal-weight; padding-bottom: 15px; + } + .grid-direction { display: flex; align-items: center; gap: 5px; flex: 1; } + .direction { width: 22px; height: 22px; @@ -347,17 +412,21 @@ $alert-color: #101010; background-position: center; background-size: 16px 15px; border-radius: 50%; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; opacity: 0.6; + &.down { transform: rotate(180deg); } + &.left { transform: rotate(-90deg); } + &.right { transform: rotate(90deg); } + &:hover, &.act { opacity: 1; @@ -372,21 +441,26 @@ $alert-color: #101010; font-weight: $pop-bold-weight; } } + .input-move-wrap { display: flex; align-items: center; gap: 5px; + span { color: $pop-color; font-size: $pop-normal-size; } + .input-move { width: 130px; + input { width: 100%; } } } + .direction-move-wrap { flex: none; display: grid; @@ -398,6 +472,7 @@ $alert-color: #101010; .placement-table { table { table-layout: fixed; + tr { th { display: flex; @@ -408,12 +483,14 @@ $alert-color: #101010; padding: 18px 0; border-bottom: 1px solid #424242; } + td { font-size: $pop-normal-size; color: $pop-color; border-bottom: 1px solid #424242; padding-left: 20px; } + &:first-child { td, th { @@ -422,6 +499,7 @@ $alert-color: #101010; } } } + .tooltip { position: relative; display: block; @@ -431,17 +509,20 @@ $alert-color: #101010; background: url(../../public/static/images/canvas/pop_tip.svg) no-repeat center; background-size: cover; } + &.light { padding: 0; - th, - td { + + th, td { color: $alert-color; border-bottom: none; - border-top: 1px solid #efefef; + border-top: 1px solid #EFEFEF; } + th { padding: 14px 0; } + tr { &:first-child { td, @@ -449,6 +530,7 @@ $alert-color: #101010; padding-top: 14px; } } + &:last-child { td, th { @@ -464,20 +546,24 @@ $alert-color: #101010; align-items: center; gap: 10px; } + .placement-option { display: flex; align-items: center; gap: 20px; } + .select-wrap { div { width: 100%; } } + .flex-ment { display: flex; align-items: center; gap: 5px; + span { font-size: $pop-normal-size; color: $pop-color; @@ -494,18 +580,22 @@ $alert-color: #101010; display: flex; align-items: center; margin-bottom: 14px; + &:last-child { margin-bottom: 0; } + .outline-form { // width: 50%; margin-right: 15px; } } + &:last-child { border-bottom: 1px solid #424242; } } + .outline-form { display: flex; align-items: center; @@ -517,6 +607,7 @@ $alert-color: #101010; font-weight: $pop-bold-weight; color: $pop-color; margin-right: 10px; + &.thin { width: auto; font-weight: $pop-normal-weight; @@ -537,6 +628,7 @@ $alert-color: #101010; background-size: 12px 12px; background-position: center; } + &:last-child { margin-right: 0; } @@ -544,24 +636,28 @@ $alert-color: #101010; .cul-wrap { display: flex; + .outline-box { width: 50%; margin-right: 15px; + .outline-form { width: 100%; margin-bottom: 14px; margin-right: 0; + &:last-child { margin-bottom: 0; } } } + .cul-box { display: flex; align-items: center; justify-content: center; width: 50%; - background-color: #3d3d3d; + background-color: #3D3D3D; border-radius: 2px; } } @@ -569,7 +665,7 @@ $alert-color: #101010; // 외벽선 속성 설정 .properties-guide { font-size: $pop-normal-size; - color: #aaa; + color: #AAA; font-weight: $pop-normal-weight; margin-bottom: 14px; } @@ -580,16 +676,19 @@ $alert-color: #101010; font-weight: $pop-bold-weight; margin-bottom: 10px; } + .properties-setting-wrap { &.outer { margin-top: 24px; } + .setting-btn-wrap { display: flex; align-items: center; padding: 14px 0; border-top: 1px solid #424242; border-bottom: 1px solid #424242; + .setting-btn { display: block; width: 100%; @@ -598,17 +697,21 @@ $alert-color: #101010; color: #fff; font-weight: 700; border-radius: 2px; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.green { background-color: #305941; - border: 1px solid #45cd7d; + border: 1px solid #45CD7D; + &:hover { background-color: #3a6b4e; } } + &.blue { - background-color: #2e5360; - border: 1px solid #3fbae6; + background-color: #2E5360; + border: 1px solid #3FBAE6; + &:hover { background-color: #365f6e; } @@ -624,34 +727,39 @@ $alert-color: #101010; grid-template-rows: 1fr 1fr; gap: 24px 10px; margin-bottom: 24px; + .shape-box { display: flex; align-items: center; justify-content: center; width: 100%; padding: 13px; - background-color: #3d3d3d; - transition: background 0.15s ease-in-out; + background-color: #3D3D3D; + transition: background .15s ease-in-out; + img { max-width: 100%; } } + .shape-title { font-size: $pop-normal-size; font-weight: $pop-bold-weight; color: $pop-color; margin-top: 10px; text-align: center; - transition: color 0.15s ease-in-out; + transition: color .15s ease-in-out; } + .shape-menu-box { &.act, &:hover { .shape-box { - background-color: #008bff; + background-color: #008BFF; } + .shape-title { - color: #008bff; + color: #008BFF; } } } @@ -662,12 +770,14 @@ $alert-color: #101010; border-top: 1px solid #424242; border-bottom: 1px solid #424242; } + .padding-form { padding-left: 23px; } + .discrimination-box { padding: 16px 12px; - border: 1px solid #3d3d3d; + border: 1px solid #3D3D3D; border-radius: 2px; } @@ -681,8 +791,10 @@ $alert-color: #101010; .eaves-keraba-table { display: table; border-collapse: collapse; + .eaves-keraba-item { display: table-row; + .eaves-keraba-th, .eaves-keraba-td { font-size: $pop-normal-size; @@ -692,22 +804,26 @@ $alert-color: #101010; vertical-align: middle; padding-bottom: 14px; } + .eaves-keraba-td { padding-left: 10px; } + .eaves-keraba-ico { display: flex; align-items: center; justify-content: center; padding: 5px; - background-color: #3d3d3d; - border: 1px solid #3d3d3d; + background-color: #3D3D3D; + border: 1px solid #3D3D3D; border-radius: 2px; cursor: pointer; + &.act { - border: 1px solid #ed0004; + border: 1px solid #ED0004; } } + &:last-child { .eaves-keraba-th, .eaves-keraba-td { @@ -716,14 +832,17 @@ $alert-color: #101010; } } } + .guide { font-size: $pop-normal-size; font-weight: $pop-normal-weight; color: $pop-color; margin-bottom: 24px; + &.sm { margin-bottom: 15px; } + span { display: block; } @@ -736,12 +855,14 @@ $alert-color: #101010; padding-bottom: 14px; border-bottom: 1px solid #424242; margin-bottom: 14px; + span { font-size: $pop-normal-size; color: $pop-color; font-weight: $pop-bold-weight; margin-right: 10px; } + .allocation-edit { display: flex; align-items: center; @@ -753,6 +874,7 @@ $alert-color: #101010; font-weight: $pop-normal-weight; border: 1px solid #484848; background-color: #323234; + i { display: block; width: 12px; @@ -769,11 +891,14 @@ $alert-color: #101010; align-items: center; gap: 10px; margin-bottom: 10px; + .flex-ment { gap: 10px; + .dec { text-decoration: underline; } + .delete { display: block; width: 15px; @@ -782,6 +907,7 @@ $alert-color: #101010; background-size: cover; } } + &:last-child { margin-bottom: 0; } @@ -792,6 +918,7 @@ $alert-color: #101010; display: flex; align-items: center; gap: 5px; + button { display: flex; align-items: center; @@ -804,7 +931,8 @@ $alert-color: #101010; border: 1px solid #646464; border-radius: 2px; padding: 0 10px; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + i { height: 15px; display: block; @@ -812,25 +940,30 @@ $alert-color: #101010; background-repeat: no-repeat; background-position: center; background-size: cover; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.allocation01 { background-image: url(../../public/static/images/canvas/allocation_icon01_white.svg); width: 15px; } + &.allocation02 { background-image: url(../../public/static/images/canvas/allocation_icon02_white.svg); width: 18px; } } + &.act, &:hover { color: #101010; border: 1px solid #101010; background-color: #fff; + i { &.allocation01 { background-image: url(../../public/static/images/canvas/allocation_icon01_black.svg); } + &.allocation02 { background-image: url(../../public/static/images/canvas/allocation_icon02_black.svg); } @@ -852,11 +985,13 @@ $alert-color: #101010; grid-template-rows: repeat(3, 90px); gap: 10px; margin-bottom: 10px; + .shape-menu-box { border-radius: 2px; - background-color: #3d3d3d; + background-color: #3D3D3D; padding: 8px; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + .shape-box { display: flex; justify-content: center; @@ -867,9 +1002,10 @@ $alert-color: #101010; background-color: #313131; border-radius: 2px; } + &.act, &:hover { - background-color: #008bff; + background-color: #008BFF; } } } @@ -880,32 +1016,37 @@ $alert-color: #101010; justify-content: center; gap: 5px; padding: 5px; - background-color: #3d3d3d; + background-color: #3D3D3D; margin-bottom: 24px; + .library-btn { width: 30px; height: 30px; - border: 1px solid #6c6c6c; + border: 1px solid #6C6C6C; border-radius: 2px; background-color: transparent; background-repeat: no-repeat; background-position: center; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.ico01 { background-image: url(../../public/static/images/canvas/shape_labrary01.svg); background-size: 14px 14px; } + &.ico02 { background-image: url(../../public/static/images/canvas/shape_labrary02.svg); background-size: 13px 17px; } + &.ico03 { background-image: url(../../public/static/images/canvas/shape_labrary03.svg); background-size: 17px 13px; } + &:hover { - border-color: #1083e3; - background-color: #1083e3; + border-color: #1083E3; + background-color: #1083E3; } } } @@ -913,27 +1054,33 @@ $alert-color: #101010; .plane-shape-wrapper { display: flex; gap: 10px; + .plane-box { padding: 10px; border-radius: 2px; - background-color: #3d3d3d; + background-color: #3D3D3D; + .plane-box-tit { font-size: $pop-normal-size; font-weight: 600; color: $pop-color; margin-bottom: 10px; } + &.shape-box { flex: 1; + .shape-box-inner { display: flex; gap: 10px; min-height: 140px; + .shape-img { position: relative; flex: 1; background-color: #fff; border-radius: 2px; + img { position: absolute; top: 50%; @@ -941,18 +1088,21 @@ $alert-color: #101010; transform: translate(-50%, -50%); } } + .shape-data { flex: none; width: 190px; background-color: #313131; border-radius: 2px; padding: 15px; + .eaves-keraba-table { .eaves-keraba-item { .eaves-keraba-th, .eaves-keraba-td { padding-bottom: 10px; } + &:last-child { .eaves-keraba-th, .eaves-keraba-td { @@ -964,11 +1114,13 @@ $alert-color: #101010; } } } + &.direction-box { display: flex; flex-direction: column; flex: none; width: 180px; + .plane-direction-box { flex: 1; display: flex; @@ -980,36 +1132,43 @@ $alert-color: #101010; } } } + .plane-direction { width: 150px; position: relative; height: 120px; + span { position: absolute; font-size: 12px; font-weight: 500; - color: #b1b1b1; + color: #B1B1B1; + &.top { top: 0; left: 50%; transform: translateX(-50%); } + &.right { top: 50%; right: 0; transform: translateY(-50%); } + &.bottom { bottom: 0; left: 50%; transform: translateX(-50%); } + &.left { top: 50%; left: 0; transform: translateY(-50%); } } + .plane-btn { position: absolute; width: 28px; @@ -1020,27 +1179,32 @@ $alert-color: #101010; background-repeat: no-repeat; background-position: center; border-radius: 50%; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.up { top: 22px; left: 50%; transform: translateX(-50%); } + &.right { top: 50%; right: 32px; transform: translateY(-50%) rotate(90deg); } + &.down { bottom: 22px; left: 50%; transform: translateX(-50%) rotate(180deg); } + &.left { top: 50%; left: 32px; transform: translateY(-50%) rotate(270deg); } + &:hover, &.act { background-color: #fff; @@ -1068,6 +1232,7 @@ $alert-color: #101010; align-items: center; justify-content: center; } + .discrimination-tit { font-size: 13px; color: #fff; @@ -1079,11 +1244,13 @@ $alert-color: #101010; min-height: 206px; gap: 24px; margin-top: 14px; + .object-size-img { position: relative; flex: none; width: 200px; background-color: #fff; + img { position: absolute; top: 50%; @@ -1097,10 +1264,11 @@ $alert-color: #101010; .display-change-wrap { margin: 24px 0; } + .warning { font-size: $pop-normal-size; font-weight: $pop-normal-weight; - color: #ffafaf; + color: #FFAFAF; } // 각 변 속성 변경 @@ -1114,10 +1282,12 @@ $alert-color: #101010; .drawing-flow-wrap { display: flex; gap: 10px; + .discrimination-box { flex: 1; display: flex; flex-direction: column; + .object-direction-wrap { flex: 1; } @@ -1129,6 +1299,7 @@ $alert-color: #101010; align-items: center; justify-content: center; } + .compas-box-inner { position: relative; width: 200px; @@ -1152,157 +1323,206 @@ $alert-color: #101010; top: 12.5px; left: 50%; font-size: 11px; - color: #8b8b8b; + color: #8B8B8B; font-weight: 500; -webkit-user-select: none; -moz-user-select: none; -ms-use-select: none; user-select: none; } + &:nth-child(1) { transform: rotate(180deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(180deg); } } + &:nth-child(2) { transform: rotate(195deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(165deg); } } + &:nth-child(3) { transform: rotate(210deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(150deg); } } + &:nth-child(4) { transform: rotate(225deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(135deg); } } + &:nth-child(5) { transform: rotate(240deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(120deg); } } + &:nth-child(6) { transform: rotate(255deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(105deg); } } + &:nth-child(7) { transform: rotate(270deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(90deg); } } + &:nth-child(8) { transform: rotate(285deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(75deg); } } + &:nth-child(9) { transform: rotate(300deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(60deg); } } + &:nth-child(10) { transform: rotate(315deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(45deg); } } + &:nth-child(11) { transform: rotate(330deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(30deg); } } + &:nth-child(12) { transform: rotate(345deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(15deg); } } + &:nth-child(13) { transform: rotate(0deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(0deg); } } + &:nth-child(14) { transform: rotate(15deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-15deg); } } + &:nth-child(15) { transform: rotate(30deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-30deg); } } + &:nth-child(16) { transform: rotate(45deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-45deg); } } + &:nth-child(17) { transform: rotate(60deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-60deg); } } + &:nth-child(18) { transform: rotate(75deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-75deg); } } + &:nth-child(19) { transform: rotate(90deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-90deg); } } + &:nth-child(20) { transform: rotate(105deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-105deg); } } + &:nth-child(21) { transform: rotate(120deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-120deg); } } + &:nth-child(22) { transform: rotate(135deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-135deg); } } + &:nth-child(23) { transform: rotate(150deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-150deg); } } + &:nth-child(24) { transform: rotate(165deg) translate(-50%, -50%); + i { transform: translateX(-50%) rotate(-165deg); } } + &.act { &::after { content: ''; @@ -1314,11 +1534,13 @@ $alert-color: #101010; height: 5px; background-color: #fff; } + i { color: #fff; } } } + .compas { position: absolute; top: 50%; @@ -1328,6 +1550,7 @@ $alert-color: #101010; height: 148px; border: 4px solid #fff; border-radius: 50%; + .compas-arr { width: 100%; height: 100%; @@ -1337,12 +1560,14 @@ $alert-color: #101010; } } + // 지붕모듈선택 .roof-module-tab { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; + .module-tab-bx { flex: 1; height: 34px; @@ -1351,17 +1576,19 @@ $alert-color: #101010; border-radius: 2px; background-color: transparent; font-size: 12px; - color: #aaa; + color: #AAA; text-align: center; cursor: default; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.act { - background-color: #1083e3; - border: 1px solid #1083e3; + background-color: #1083E3; + border: 1px solid #1083E3; color: #fff; font-weight: 500; } } + .tab-arr { display: block; width: 9px; @@ -1370,7 +1597,8 @@ $alert-color: #101010; background-position: center; background-size: cover; background-image: url(../../public/static/images/canvas/module_tab_arr.svg); - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &.act { background-image: url(../../public/static/images/canvas/module_tab_arr_white.svg); } @@ -1379,11 +1607,14 @@ $alert-color: #101010; .roof-module-compas { margin-bottom: 24px; + .compas-box-inner { width: 280px; height: 253px; + .circle { top: 86%; + &:nth-child(1), &:nth-child(7), &:nth-child(13), @@ -1396,20 +1627,23 @@ $alert-color: #101010; transform: translateX(-50%); width: 1px; height: 6px; - background-color: #8b8b8b; + background-color: #8B8B8B; } } + i { top: 32px; } + &.act { i { - color: #8b8b8b; + color: #8B8B8B; } } } } } + .center-wrap { display: flex; flex-direction: column; @@ -1420,6 +1654,7 @@ $alert-color: #101010; .module-table-flex-wrap { display: flex; gap: 10px; + .outline-form { flex: 1; } @@ -1427,6 +1662,7 @@ $alert-color: #101010; .module-box-tab { display: flex; + .module-btn { flex: 1; border-top: 1px solid #505050; @@ -1437,10 +1673,12 @@ $alert-color: #101010; height: 30px; font-size: 12px; font-weight: 400; - transition: all 0.15s ease-in-out; + transition: all .15s ease-in-out; + &:first-child { border-left: 1px solid #505050; } + &.act { border-color: #fff; background-color: #fff; @@ -1451,32 +1689,39 @@ $alert-color: #101010; .module-table-box { flex: 1; - background-color: #3d3d3d; + background-color: #3D3D3D; border-radius: 2px; + .module-table-inner { padding: 10px; + .outline-form { span { width: auto; } } + .module-table-tit { padding: 10px 0; font-size: 12px; color: #fff; - border-bottom: 1px solid #4d4d4d; + border-bottom: 1px solid #4D4D4D; } + .eaves-keraba-table { width: 100%; margin-top: 15px; + .eaves-keraba-th { width: 72px; } + .eaves-keraba-th, .eaves-keraba-td { padding-bottom: 5px; } } + .self-table-tit { font-size: 12px; font-weight: 500; @@ -1484,20 +1729,25 @@ $alert-color: #101010; padding-bottom: 15px; } } + .warning-guide { padding: 20px; + .warning { - color: #ffcaca; + color: #FFCACA; max-height: 55px; overflow-y: auto; padding-right: 30px; + &::-webkit-scrollbar { width: 4px; background-color: transparent; } + &::-webkit-scrollbar-thumb { - background-color: #d9d9d9; + background-color: #D9D9D9; } + &::-webkit-scrollbar-track { background-color: transparent; } @@ -1507,23 +1757,27 @@ $alert-color: #101010; .module-self-table { display: table; - border-top: 1px solid #4d4d4d; + border-top: 1px solid #4D4D4D; border-collapse: collapse; width: 100%; + .self-table-item { display: table-row; + .self-item-td, .self-item-th { display: table-cell; vertical-align: middle; - border-bottom: 1px solid #4d4d4d; + border-bottom: 1px solid #4D4D4D; } + .self-item-th { width: 60px; font-size: 12px; font-weight: 500; color: #fff; } + .self-item-td { font-size: 12px; font-weight: 400; @@ -1537,28 +1791,35 @@ $alert-color: #101010; display: flex; align-items: center; margin-top: 15px; + button { margin-left: auto; } } + .hexagonal-wrap { .hexagonal-item { padding: 15px 0; - border-bottom: 1px solid #4d4d4d; + border-bottom: 1px solid #4D4D4D; + &:first-child { padding-top: 0; } + &:last-child { padding-bottom: 0; border: none; } + .hexagonal-flx-auto { display: flex; justify-content: space-between; } + .hexagonal-flx { display: flex; align-items: center; + button { margin-left: auto; } @@ -1574,16 +1835,20 @@ $alert-color: #101010; .x-scroll-table { overflow-x: auto; padding-bottom: 5px; + .roof-module-table { min-width: 1200px; } + &::-webkit-scrollbar { height: 4px; background-color: transparent; } + &::-webkit-scrollbar-thumb { - background-color: #d9d9d9; + background-color: #D9D9D9; } + &::-webkit-scrollbar-track { background-color: transparent; } @@ -1600,8 +1865,9 @@ $alert-color: #101010; gap: 5px; min-height: 60px; padding: 12px; - border: 1px solid rgba(255, 255, 255, 0.2); + border: 1px solid rgba(255, 255, 255, 0.20); } + .circuit-table-tit { color: #fff; font-size: 12px; @@ -1616,13 +1882,16 @@ $alert-color: #101010; max-height: 560px; overflow-y: auto; margin-bottom: 15px; + &::-webkit-scrollbar { width: 4px; background-color: transparent; } + &::-webkit-scrollbar-thumb { - background-color: #d9d9d9; + background-color: #D9D9D9; } + &::-webkit-scrollbar-track { background-color: transparent; } @@ -1632,13 +1901,16 @@ $alert-color: #101010; display: flex; gap: 10px; margin-bottom: 10px; + .circuit-table-flx-box { flex: 1; display: flex; flex-direction: column; + .bottom-wrap { margin-top: auto; } + .roof-module-table { table { table-layout: fixed; @@ -1660,6 +1932,7 @@ $alert-color: #101010; gap: 15px 0; margin-bottom: 24px; } + .additional-wrap { padding: 24px 0; border-top: 1px solid #424242; @@ -1670,22 +1943,26 @@ $alert-color: #101010; align-items: center; padding: 5px 0; gap: 15px; + .additional-color-box { display: flex; align-items: center; gap: 8px; + .additional-color { display: block; width: 16px; height: 16px; + &.pink { - border: 2px solid #ea10ac; - background-color: #16417d; + border: 2px solid #EA10AC; + background-color: #16417D; } + &.white { - border: 2px solid #fff; + border: 2px solid #FFF; background-color: #001027; } } } -} +} \ No newline at end of file diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss index c288c8e1..b575113b 100644 --- a/src/styles/_reset.scss +++ b/src/styles/_reset.scss @@ -1,924 +1,792 @@ * { - -webkit-text-size-adjust: none; - -moz-text-size-adjust: none; - -ms-text-size-adjust: none; - text-size-adjust: none; - box-sizing: content-box; + -webkit-text-size-adjust:none; + -moz-text-size-adjust:none; + -ms-text-size-adjust:none; + text-size-adjust: none; + box-sizing: content-box } -*, -::after, -::before { - box-sizing: border-box; +*, ::after, ::before { + box-sizing: border-box; } -html, -body { - width: 100%; - height: 100%; - font-size: 16px; +html, body{ + width: 100%; + height: 100%; + font-size: 16px; } -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - vertical-align: baseline; - font-family: 'Noto Sans JP', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-smooth: never; +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + font-family: 'Noto Sans JP', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-smooth: never; } /* HTML5 display-role reset for older browsers */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; } body { - line-height: 1.4; -} -body:first-of-type caption { - display: none; + line-height: 1.4; } +body:first-of-type caption { display:none;} -ol, -ul { - list-style: none; +ol, ul { + list-style: none; } -blockquote, -q { - quotes: none; +blockquote, q { + quotes: none; } -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; - content: none; +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; } table { - width: 100%; - border-collapse: separate; - border-spacing: 0; - border: 0 none; + width: 100%; + border-collapse: separate; + border-spacing:0; + border:0 none; } -caption, -th, -td { - text-align: left; - font-weight: normal; - border: 0; +caption, th, td { + text-align:left; + font-weight: normal; + border:0; } -a { - cursor: pointer; - color: #000; +a { + cursor:pointer; + color:#000; } -a, -a:hover, -a:active { - text-decoration: none; - -webkit-tap-highlight-color: transparent; +a, a:hover, a:active { + text-decoration:none; + -webkit-tap-highlight-color: transparent; } /*form_style*/ -input, -select, -textarea, -button, -a, -label { - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +input, select, textarea, button, a, label { + -webkit-tap-highlight-color:rgba(0,0,0,0); } -button, -input[type='text'], -input[type='button'] { - -webkit-appearance: none; - -webkit-border-radius: 0; - -webkit-appearance: none; - appearance: none; - border-radius: 0; +button,input[type=text], input[type=button] { + -webkit-appearance: none; + -webkit-border-radius: 0; + -webkit-appearance:none; + appearance: none; + border-radius: 0 } -input[type='checkbox'], -input[type='radio'] { - box-sizing: border-box; - padding: 0; +input[type=checkbox], input[type=radio] { + box-sizing: border-box; + padding: 0; } -input, -select, -button { - border: 0 none; - outline: none; - margin: 0; +input, select, button { + border:0 none; + outline:none; + margin:0; } select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } select::-ms-expand { - display: none; + display: none; } ::-webkit-input-placeholder { - line-height: 1; - font-weight: 300; - font-size: 0.938rem; - letter-spacing: -0.6px; - color: #8b8b8b; + line-height:1; + font-weight:300; + font-size:0.938rem; + letter-spacing:-0.6px; + color:#8b8b8b; } -.log-box ::-webkit-input-placeholder { - color: #8b8b8b; +.log-box ::-webkit-input-placeholder{ + color:#8b8b8b; } -button { - background: transparent; - font-family: 'Noto Sans JP', sans-serif; - border: none; - padding: 0; - margin: 0; - line-height: 1.4; - color: inherit; - outline: none; - cursor: pointer; +button{ + background: transparent; + font-family: 'Noto Sans JP', sans-serif; + border: none; + padding: 0; + margin: 0; + line-height: 1.4; + color: inherit; + outline: none; + cursor: pointer; } -.pre { - font-family: 'Pretendard', sans-serif !important; +.pre{ + font-family: 'Pretendard', sans-serif !important; } // margin -.mt5 { - margin-top: 5px !important; -} -.mt10 { - margin-top: 10px !important; -} -.mt15 { - margin-top: 15px !important; -} -.mb5 { - margin-bottom: 5px !important; -} -.mb10 { - margin-bottom: 10px !important; -} -.mb15 { - margin-bottom: 15px !important; -} -.mr5 { - margin-right: 5px !important; -} -.mr10 { - margin-right: 10px !important; -} -.mr15 { - margin-right: 15px !important; -} -.ml5 { - margin-left: 5px !important; -} -.ml10 { - margin-left: 10px !important; -} -.ml15 { - margin-left: 15px !important; -} +.mt5{margin-top: 5px !important;} +.mt10{margin-top: 10px !important;} +.mt15{margin-top: 15px !important;} +.mb5{margin-bottom: 5px !important;} +.mb10{margin-bottom: 10px !important;} +.mb15{margin-bottom: 15px !important;} +.mr5{margin-right: 5px !important;} +.mr10{margin-right: 10px !important;} +.mr15{margin-right: 15px !important;} +.ml5{margin-left: 5px !important;} +.ml10{margin-left: 10px !important;} +.ml15{margin-left: 15px !important;} // align -.al-l { - text-align: left !important; -} -.al-r { - text-align: right !important; -} -.al-c { - text-align: center !important; -} +.al-l{text-align: left !important;} +.al-r{text-align: right !important;} +.al-c{text-align: center !important;} + // button -.btn-frame { - display: inline-block; - padding: 0 7px; - height: 34px; - line-height: 34px; - border-radius: 2px; - color: #fff; - font-size: 12px; - font-weight: 400; - border: 1px solid #000; - text-align: center; - font-family: 'Pretendard', sans-serif; - transition: all 0.17s ease-in-out; - cursor: pointer; - &.block { - width: 100%; - } - &.small { - font-family: 'Noto Sans JP', sans-serif; - height: 30px; - line-height: 30px; - font-size: 13px; - } +.btn-frame{ + display: inline-block; + padding: 0 7px; + height: 34px; + line-height: 34px; + border-radius: 2px; + color: #fff; + font-size: 12px; + font-weight: 400; + border: 1px solid #000; + text-align: center; + font-family: 'Pretendard', sans-serif; + transition: all .17s ease-in-out; + cursor: pointer; + &.block{ + width: 100%; + } + &.small{ + font-family: 'Noto Sans JP', sans-serif; + height: 30px; + line-height: 30px; + font-size: 13px; + } - &.deepgray { - background-color: #2c2c2c; - border: 1px solid #484848; - } - &.gray { - background-color: #3c3c3c; - border: 1px solid #545454; - } - &.dark { - background-color: #1c1c1c; - border: 1px solid #484848; - } - &.modal { - font-family: 'Noto Sans JP', sans-serif; - background-color: #272727; - border: 1px solid #484848; - color: #aaa; - &:hover { - background-color: #1083e3; - border: 1px solid #1083e3; - color: #fff; - font-weight: 500; + &.deepgray{ + background-color: #2C2C2C; + border: 1px solid #484848; } - } - &.sub-tab { - height: 30px; - padding: 0 10px; - line-height: 28px; - font-family: 'Noto Sans JP', sans-serif; - background-color: #2d2d2d; - border: 1px solid #393939; - color: #aaa; - &.act, - &:hover { - background-color: #414e6c; - border: 1px solid #414e6c; - color: #fff; - font-weight: 500; + &.gray{ + background-color: #3C3C3C; + border: 1px solid #545454; } - } - &.roof { - height: 30px; - padding: 0 10px; - line-height: 28px; - font-family: 'Noto Sans JP', sans-serif; - background-color: transparent; - border: 1px solid #484848; - color: #fff; - &.blue { - background-color: #414e6c; - border: 1px solid #414e6c; - &:hover { - background-color: #414e6c; - border: 1px solid #414e6c; - } + &.dark{ + background-color: #1C1C1C; + border: 1px solid #484848; } - &.white { - background-color: #fff; - border: 1px solid #fff; - color: #101010; - &:hover { - background-color: #fff; - border: 1px solid #fff; - color: #101010; - } + &.modal{ + font-family: 'Noto Sans JP', sans-serif; + background-color: #272727; + border: 1px solid #484848; + color: #aaa; + &:hover{ + background-color: #1083E3; + border: 1px solid #1083E3; + color: #fff; + font-weight: 500; + } } - &:hover { - font-weight: 400; - background-color: transparent; - border: 1px solid #484848; - color: #fff; + &.sub-tab{ + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: #2D2D2D; + border: 1px solid #393939; + color: #aaa; + &.act, + &:hover{ + background-color: #414E6C; + border: 1px solid #414E6C; + color: #fff; + font-weight: 500; + } } - } - &.self { - height: 30px; - padding: 0 10px; - line-height: 28px; - font-family: 'Noto Sans JP', sans-serif; - background-color: transparent; - border: 1px solid #676767; - color: #aaaaaa; - &:hover { - background-color: #272727; - border-color: #676767; - font-weight: 400; + &.roof{ + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + &.blue{ + background-color: #414E6C; + border: 1px solid #414E6C; + &:hover{ + background-color: #414E6C; + border: 1px solid #414E6C; + } + } + &.white{ + background-color: #fff; + border: 1px solid #fff; + color: #101010; + &:hover{ + background-color: #fff; + border: 1px solid #fff; + color: #101010; + } + } + &:hover{ + font-weight: 400; + background-color: transparent; + border: 1px solid #484848; + color: #fff; + } } - } - &:hover, - &.act { - background-color: #1083e3; - border: 1px solid #1083e3; - color: #fff; - font-weight: 500; - } - &.block { - display: block; - width: 100%; - } - &.ico-flx { - display: flex; - align-items: center; - .ico { - margin-right: 10px; + &.self{ + height: 30px; + padding: 0 10px; + line-height: 28px; + font-family: 'Noto Sans JP', sans-serif; + background-color: transparent; + border: 1px solid #676767; + color: #AAAAAA; + &:hover{ + background-color: #272727; + border-color: #676767; + font-weight: 400; + } } &:hover, - &.act { - font-weight: 400; + &.act{ + background-color: #1083E3; + border: 1px solid #1083E3; + color: #fff; + font-weight: 500; } - } + &.block{ + display: block; + width: 100%; + } + &.ico-flx{ + display: flex; + align-items: center; + .ico{ + margin-right: 10px; + } + &:hover, + &.act{ + font-weight: 400; + } + } } -.btn-origin { - display: inline-block; - height: 30px; - padding: 0 10px; - border-radius: 2px; - background-color: #101010; - color: #fff; - font-size: 13px; - font-weight: 400; - transition: all 0.15s ease-in-out; - &.navy { - background-color: #304961; - &:hover { - background-color: #233546; +.btn-origin{ + display: inline-block; + height: 30px; + padding: 0 10px; + border-radius: 2px; + background-color: #101010; + color: #fff; + font-size: 13px; + font-weight: 400; + transition: all .15s ease-in-out; + &.navy{ + background-color: #304961; + &:hover{ + background-color: #233546; + } } - } - &.grey { - background-color: #94a0ad; - &:hover { - background-color: #607f9a; + &.grey{ + background-color: #94A0AD; + &:hover{ + background-color: #607F9A; + } } - } } // select -.sort-select { - position: relative; - display: inline-block; - min-width: 100px; - height: 30px; - line-height: 30px; - padding: 0 25px 0 10px; - background-color: #373737; - border: 1px solid #3f3f3f; - border-radius: 2px; - border-top-left-radius: 2px; - color: #fff; - cursor: pointer; - p { - font-size: 13px; - color: #fff; - height: 100%; - } - .select-item-wrap { - position: absolute; - top: 100%; - left: -1px; - clip-path: inset(0 0 100% 0); - width: calc(100% + 2px); - padding: 8px 0; - max-height: 100px; - overflow-y: auto; - background-color: #373737; - border: 1px solid #3f3f3f; - border-radius: 2px; - transition: all 0.17s ease-in-out; - visibility: hidden; - z-index: 999; - .select-item { - display: flex; - align-items: center; - padding: 8px 20px; - line-height: 1.4; - transition: all 0.17s ease-in-out; - button { - font-size: 12px; - color: #fff; - line-height: 1.4; - } - &:hover { - background-color: #2c2c2c; - } - } - &::-webkit-scrollbar { - width: 2px; - background-color: transparent; - } - &::-webkit-scrollbar-thumb { - background-color: #5a5a5a; - border-radius: 10px; - } - &::-webkit-scrollbar-track { - background-color: transparent; - } - } - &::after { - content: ''; - position: absolute; - top: 50%; - right: 7px; - transform: translateY(-50%); - width: 10px; - height: 6px; - background: url(/static/images/common/select-arr.svg) no-repeat center; - background-size: cover; - transition: all 0.17s ease-in-out; - } - &.active { - .select-item-wrap { - clip-path: inset(0 0 0 0); - visibility: visible; - } - &:after { - transform: translateY(-50%) rotate(-180deg); - } - } -} - -.select-light { - position: relative; - display: block; - width: 100%; - height: 30px; - background: #fff url(../../public/static/images/common/select_light_arr.svg) calc(100% - 11px) center no-repeat; - background-size: 10px 6px; - border: 1px solid #eee; - padding: 0 30px 0 10px; - font-size: 13px; - color: #45576f; - font-family: 'Noto Sans JP', sans-serif; - cursor: pointer; - &:disabled { - opacity: 1; - background-color: #fafafa; - color: #999; - cursor: default; - } - &.black { - color: #101010; - } - &.dark { - background: #323234 url(../../public/static/images/common/select_dark_arr.svg) calc(100% - 11px) center no-repeat; - color: #898989; - font-size: 12px; - border-radius: 2px; - border: none; - } -} - -// input -.form-input { - label { - display: block; - color: #aaa; - font-size: 12px; - font-weight: 500; - margin-bottom: 10px; - } -} -input[type='number'], -input[type='text'] { - &.input-origin { +.sort-select{ + position: relative; display: inline-block; + min-width: 100px; height: 30px; line-height: 30px; + padding: 0 25px 0 10px; + background-color: #373737; + border: 1px solid #3F3F3F; border-radius: 2px; - background-color: #323234; + border-top-left-radius: 2px; color: #fff; - font-size: 12px; - font-weight: 500; - font-family: 'Pretendard', sans-serif; - padding: 0 10px; - letter-spacing: 0px; - text-align: right; - &::placeholder { - opacity: 1; - font-size: 12px; - letter-spacing: 0px; + cursor: pointer; + p{ + font-size: 13px; + color: #fff; + height: 100%; } - &.block { - width: 100%; + .select-item-wrap{ + position: absolute; + top: 100%; + left: -1px; + clip-path:inset(0 0 100% 0); + width: calc(100% + 2px); + padding: 8px 0; + max-height: 100px; + overflow-y: auto; + background-color: #373737; + border: 1px solid #3F3F3F; + border-radius: 2px; + transition: all 0.17s ease-in-out; + visibility: hidden; + z-index: 999; + .select-item{ + display: flex; + align-items: center; + padding: 8px 20px; + line-height: 1.4; + transition: all .17s ease-in-out; + button{ + font-size: 12px; + color: #fff; + line-height: 1.4; + } + &:hover{ + background-color: #2C2C2C; + } + } + &::-webkit-scrollbar { + width: 2px; + background-color: transparent; + + } + &::-webkit-scrollbar-thumb { + background-color: #5a5a5a; + border-radius: 10px; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } } - &:read-only { - color: #aaa; + &::after{ + content: ''; + position: absolute; + top: 50%; + right: 7px; + transform: translateY(-50%); + width: 10px; + height: 6px; + background: url(/static/images/common/select-arr.svg) no-repeat center; + background-size: cover; + transition: all .17s ease-in-out; } - &.plane { - font-family: 'Noto Sans JP', sans-serif; - border: 1px solid #525252; - background-color: transparent; + &.active{ + .select-item-wrap{ + clip-path: inset(0 0 0 0); + visibility: visible; + } + &:after{ + transform: translateY(-50%) rotate(-180deg); + } } - } - &.input-light { +} + +.select-light{ + position: relative; display: block; width: 100%; height: 30px; - padding: 0 10px; + background: #FFF url(../../public/static/images/common/select_light_arr.svg) calc(100% - 11px) center no-repeat; + background-size: 10px 6px; border: 1px solid #eee; - border-radius: 2px; - background-color: #fff; - font-family: 'Noto Sans JP', sans-serif; + padding: 0 30px 0 10px; font-size: 13px; - color: #45576f; - font-weight: normal; - transition: border-color 0.17s ease-in-out; - text-align: left; - &:read-only { - background-color: #fafafa; - color: #999999; + color: #45576F; + font-family: 'Noto Sans JP', sans-serif; + cursor: pointer; + &:disabled{ + opacity: 1; + background-color: #FAFAFA; + color: #999; + cursor: default; + } + &.black{ + color: #101010; + } + &.dark{ + background: #323234 url(../../public/static/images/common/select_dark_arr.svg) calc(100% - 11px) center no-repeat; + color: #898989; + font-size: 12px; + border-radius: 2px; + border: none; } - } } + +// input +.form-input{ + label{ + display: block; + color: #aaa; + font-size: 12px; + font-weight: 500; + margin-bottom: 10px; + } +} +input[type=number], +input[type=text]{ + &.input-origin{ + display: inline-block; + height: 30px; + line-height: 30px; + border-radius: 2px; + background-color: #323234; + color: #fff; + font-size: 12px; + font-weight: 500; + font-family: 'Pretendard', sans-serif; + padding: 0 10px; + letter-spacing: 0px; + text-align: right; + &::placeholder{ + opacity: 1; + font-size: 12px; + letter-spacing: 0px; + } + &.block{ + width: 100%; + } + &:read-only{ + color: #AAA; + } + &.plane{ + font-family: 'Noto Sans JP', sans-serif; + border: 1px solid #525252; + background-color: transparent; + } + } + &.input-light{ + display: block; + width: 100%; + height: 30px; + padding: 0 10px; + border: 1px solid #eee; + border-radius: 2px; + background-color: #fff; + font-family: 'Noto Sans JP', sans-serif; + font-size: 13px; + color: #45576F; + font-weight: normal; + transition: border-color .17s ease-in-out; + text-align: left; + &:read-only{ + background-color: #FAFAFA; + color: #999999; + } + } +} + + + // check-btn -.check-btn { - display: flex; - align-items: center; - height: 30px; - background-color: #3a3a3a; - border-radius: 3px; - transition: all 0.17s ease-in-out; - .check-area { - flex: none; - width: 30px; - height: 100%; - border-right: 1px solid #272727; - background: url(../../public/static/images/canvas/check-grey.svg) no-repeat center; - background-size: 11px 9px; - } - .title-area { - padding: 0 10px; - font-size: 12px; - color: #898989; - font-weight: 400; - } - &.block { - width: 100%; - } - &:hover, - &.act { - background-color: #fff; - .check-area { - border-right: 1px solid #101010; - background: url(../../public/static/images/canvas/check-black.svg) no-repeat center; +.check-btn{ + display: flex; + align-items: center; + height: 30px; + background-color: #3A3A3A; + border-radius: 3px; + transition: all .17s ease-in-out; + .check-area{ + flex: none; + width: 30px; + height: 100%; + border-right: 1px solid #272727; + background: url(../../public/static/images/canvas/check-grey.svg)no-repeat center; + background-size: 11px 9px; } - .title-area { - color: #101010; - font-weight: 600; + .title-area{ + padding: 0 10px; + font-size: 12px; + color: #898989; + font-weight: 400; + } + &.block{ + width: 100%; + } + &:hover, + &.act{ + background-color: #fff; + .check-area{ + border-right: 1px solid #101010; + background: url(../../public/static/images/canvas/check-black.svg)no-repeat center; + } + .title-area{ + color: #101010; + font-weight: 600; + } } - } } // arr-btn -.arr-btn { - display: block; - height: 30px; - border-radius: 3px; - background-color: #3a3a3a; - padding: 0 11px; - text-align: left; - transition: all 0.17s ease-in-out; - span { - position: relative; - font-size: 12px; - color: #898989; - font-weight: 400; - padding-right: 15px; - &:after { - content: ''; - position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - width: 5px; - height: 8px; - background: url(../../public/static/images/canvas/arr_btn_ico.svg) no-repeat center; - } - } - &:hover, - &.act { - background-color: #fff; - span { - color: #101010; - font-weight: 500; - &:after { - background: url(../../public/static/images/canvas/arr_btn_ico_black.svg) no-repeat center; - } - } - } - &.dark { - text-align: center; - background-color: #272727; - border: 1px solid #484848; - span { - color: #fff; - &:after { - background: url(../../public/static/images/canvas/arr_btn_ico_white.svg) no-repeat center; - } +.arr-btn{ + display: block; + height: 30px; + border-radius: 3px; + background-color: #3A3A3A; + padding: 0 11px; + text-align: left; + transition: all .17s ease-in-out; + span{ + position: relative; + font-size: 12px; + color: #898989; + font-weight: 400; + padding-right: 15px; + &:after{ + content: ''; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 5px; + height: 8px; + background: url(../../public/static/images/canvas/arr_btn_ico.svg)no-repeat center; + } } &:hover, - &.act { - background-color: #1083e3; - border: 1px solid #1083e3; + &.act{ + background-color: #fff; + span{ + color: #101010; + font-weight: 500; + &:after{ + background: url(../../public/static/images/canvas/arr_btn_ico_black.svg)no-repeat center; + } + } + } + &.dark{ + text-align: center; + background-color: #272727; + border: 1px solid #484848; + span{ + color: #Fff; + &:after{ + background: url(../../public/static/images/canvas/arr_btn_ico_white.svg)no-repeat center; + } + } + &:hover, + &.act{ + background-color: #1083E3; + border: 1px solid #1083E3; + } } - } } // radio .d-check-radio, -.d-check-box { - line-height: 1.1; - cursor: pointer; - input[type='checkbox'], - input[type='radio'] { - position: static; - margin-left: 0; +.d-check-box{ + line-height: 1.1; cursor: pointer; - opacity: 0; - z-index: 1; - flex: 0 0 auto; - } - label { - position: relative; - padding-left: 10px; - margin-bottom: 0; - word-break: break-all; - line-height: 1.2; - display: inline; - vertical-align: top; - color: #fff; - font-size: 13px; - font-weight: 400; - cursor: pointer; - } - &.light { - label { - color: #45576f; + input[type=checkbox], + input[type=radio]{ + position: static; + margin-left: 0; + cursor: pointer; + opacity: 0; + z-index: 1; + flex: 0 0 auto; } - } - &.no-text { - label { - padding-left: 0; + label{ + position: relative; + padding-left: 10px; + margin-bottom: 0; + word-break: break-all; + line-height: 1.2; + display: inline; + vertical-align: top; + color: #fff; + font-size: 13px; + font-weight: 400; + cursor: pointer; + } + &.light{ + label{ + color: #45576F; + } + } + &.no-text{ + label{ + padding-left: 0; + } } - } } .d-check-radio { - label { - &::before { - cursor: pointer; - content: ''; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top: 2px; - left: 0; - margin-left: -12px; - border: 1px solid #999999; - border-radius: 100%; - background-color: transparent; - text-align: center; - font-size: 13px; - line-height: 1.4; - transition: - border 0.15s ease-in-out, - color 0.15s ease-in-out; + label{ + &::before{ + cursor: pointer; + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + top:2px; + left: 0; + margin-left: -12px; + border: 1px solid #999999; + border-radius: 100%; + background-color: transparent; + text-align:center; + font-size:13px; + line-height:1.4; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + } + &::after{ + cursor: pointer; + content: ""; + display: inline-block; + position: absolute; + width: 9px; + height: 9px; + top:6px; + left: 4px; + margin-left: -12px; + border: none; + border-radius: 100%; + background-color: #fff; + text-align:center; + font-size:13px; + line-height:1.4; + opacity: 0; + visibility: hidden; + transition: opacity 0.15s ease-in-out, color 0.15s ease-in-out; + } } - &::after { - cursor: pointer; - content: ''; - display: inline-block; - position: absolute; - width: 9px; - height: 9px; - top: 6px; - left: 4px; - margin-left: -12px; - border: none; - border-radius: 100%; - background-color: #fff; - text-align: center; - font-size: 13px; - line-height: 1.4; - opacity: 0; - visibility: hidden; - transition: - opacity 0.15s ease-in-out, - color 0.15s ease-in-out; + &.light{ + label{ + &:before{ + border-color: #D6D6D7; + } + &:after{ + background-color: #697C8F; + } + } } - } - &.light { - label { - &:before { - border-color: #d6d6d7; - } - &:after { - background-color: #697c8f; - } + input[type=radio]:checked + label::after{ + opacity: 1; + visibility: visible; } - } - input[type='radio']:checked + label::after { - opacity: 1; - visibility: visible; - } - &.pop { - label { - font-size: 12px; - &:before { - width: 16px; - height: 16px; - border-color: #fff; - } - &:after { - width: 8px; - height: 8px; - background-color: #fff; - } + &.pop{ + label{ + font-size: 12px; + &:before{ + width: 16px; + height: 16px; + border-color: #fff; + } + &:after{ + width: 8px; + height: 8px; + background-color: #fff; + } + } } - } } // check-box -.d-check-box { - label { - &.red { - color: #ffcaca; +.d-check-box{ + label{ + &.red{color: #FFCACA;} + &::before{ + cursor: pointer; + content: ""; + display: inline-block; + position: absolute; + width: 17px; + height: 17px; + top: 2px; + left: 0; + margin-left: -12px; + border: 1px solid #D6D6D7; + background-color: #fff; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + } + &:after{ + cursor: pointer; + content: ""; + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + top:0; + left: 0; + margin-left: -.8rem; + transition: border 0.05s ease-in-out, color 0.05s ease-in-out; + } } - &::before { - cursor: pointer; - content: ''; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - top: 2px; - left: 0; - margin-left: -12px; - border: 1px solid #d6d6d7; - background-color: transparent; - transition: - border 0.15s ease-in-out, - color 0.15s ease-in-out; + input[type=checkbox]:checked + label::after{ + content: ""; + display: inline-block; + position: absolute; + top: 1px; + left: -1px; + width: 5px; + height: 8px; + border: 2px solid #697C8F; + border-left: none; + border-top: none; + transform: translate(7.75px,4.5px) rotate(45deg); + -ms-transform: translate(7.75px,4.5px) rotate(45deg); } - &:after { - cursor: pointer; - content: ''; - display: inline-block; - position: absolute; - width: 16px; - height: 16px; - top: 0; - left: 0; - margin-left: -0.8rem; - transition: - border 0.05s ease-in-out, - color 0.05s ease-in-out; + &.pop{ + label{ + &:before{ + background-color: transparent; + } + } + input[type=checkbox]:checked + label::after{ + border-color: #fff; + } + &.no-text{ + label{ + padding-left: 0; + } + } } - } - input[type='checkbox']:checked + label::after { - content: ''; - display: inline-block; - position: absolute; - top: 1px; - left: -1px; - width: 5px; - height: 8px; - border: 2px solid #697c8f; - border-left: none; - border-top: none; - transform: translate(7.75px, 4.5px) rotate(45deg); - -ms-transform: translate(7.75px, 4.5px) rotate(45deg); - } - &.pop { - input[type='checkbox']:checked + label::after { - border-color: #fff; + &.sel{ + input[type=checkbox]:checked + label{ + color: #D7C863; + } + input[type=checkbox]:checked + label::before, + input[type=checkbox]:checked + label::after{ + border-color: #D7C863; + } } - &.no-text { - label { - padding-left: 0; - } - } - } - &.sel { - input[type='checkbox']:checked + label { - color: #d7c863; - } - input[type='checkbox']:checked + label::before, - input[type='checkbox']:checked + label::after { - border-color: #d7c863; - } - } } // date-picker -.date-picker { - svg { - display: none; - } - .react-datepicker-wrapper { - width: 100%; - } - input[type='text'] { - display: block; - width: 100%; - height: 30px; - padding: 0 34px 0 10px; - border-radius: 2px; - border: 1px solid #eee; - font-size: 13px; - color: #45576f; - font-weight: normal; - font-family: 'Noto Sans JP', sans-serif; - background: #fff url(../../public/static/images/common/datepicker.svg) calc(100% - 11px) center no-repeat; - background-size: 14px 15px; - cursor: pointer; - } -} +.date-picker{ + svg{display: none;} + .react-datepicker-wrapper{ + width: 100%; + } + input[type=text]{ + display: block; + width: 100%; + height: 30px; + padding: 0 34px 0 10px; + border-radius: 2px; + border: 1px solid #eee; + font-size: 13px; + color: #45576F; + font-weight: normal; + font-family: 'Noto Sans JP', sans-serif; + background: #fff url(../../public/static/images/common/datepicker.svg) calc(100% - 11px) center no-repeat; + background-size: 14px 15px; + cursor: pointer; + } +} \ No newline at end of file diff --git a/src/styles/_submodal.scss b/src/styles/_submodal.scss index aa50dcdd..34d0e9ce 100644 --- a/src/styles/_submodal.scss +++ b/src/styles/_submodal.scss @@ -1,198 +1,199 @@ -.modal-popup { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - background: rgba(0, 0, 0, 0.75); - z-index: 110000; - .modal-dialog { - position: relative; - display: flex; - align-items: center; - min-height: calc(100% - (1.5rem * 2)); - width: 680px; - z-index: 200000; - margin: 1.5rem auto; - pointer-events: none; - &.middle { - width: 800px; - } - &.big { - width: 1000px; - } - .modal-content { - flex: 1; - position: relative; - background-clip: padding-box; - background-color: transparent; - outline: 0 none; - pointer-events: auto; - border-radius: 4px; - .modal-header { +.modal-popup{ + position: fixed; + top: 0; + left: 0; + width:100%; + height:100%; + overflow-x: hidden; + overflow-y: auto; + background:rgba(0,0,0,.75); + z-index:110000; + .modal-dialog { + position: relative; display: flex; align-items: center; - padding: 10px 24px; - background-color: #7992ba; - border-radius: 4px 4px 0px 0px; - // overflow: hidden; - h1.title { - font-size: 13px; - color: $pop-color; - font-weight: 700; + min-height: calc(100% - (1.5rem * 2)); + width: 680px; + z-index:200000; + margin: 1.5rem auto; + pointer-events: none; + &.middle{ + width: 800px; } - .modal-close { - margin-left: auto; - color: transparent; - font-size: 0; - width: 10px; - height: 10px; - background: url(../../public/static/images/canvas/modal_close.svg) no-repeat center; + &.big{ + width: 1000px; } - } - .modal-body { - padding: 30px; - background-color: #fff; - border-radius: 0px 0px 4px 4px; - .modal-body-inner { - margin-bottom: 20px; - &.border { - padding-bottom: 20px; - border-bottom: 1px solid #ecf0f4; - } + .modal-content{ + flex:1; + position: relative; + background-clip: padding-box; + background-color: transparent; + outline: 0 none; + pointer-events: auto; + border-radius: 4px; + .modal-header{ + display: flex; + align-items: center; + padding: 10px 24px; + background-color: #7992ba; + border-radius: 4px 4px 0px 0px; + // overflow: hidden; + h1.title{ + font-size: 13px; + color: $pop-color; + font-weight: 700; + } + .modal-close{ + margin-left: auto; + color: transparent; + font-size: 0; + width: 10px; + height: 10px; + background: url(../../public/static/images/canvas/modal_close.svg)no-repeat center; + } + } + .modal-body{ + padding: 30px; + background-color: #fff; + border-radius: 0px 0px 4px 4px; + .modal-body-inner{ + margin-bottom: 20px; + &.border{ + padding-bottom: 20px; + border-bottom: 1px solid #ECF0F4; + } + } + .footer-btn-wrap{ + display: flex; + align-items: center; + justify-content: flex-end; + } + } } - .footer-btn-wrap { - display: flex; - align-items: center; - justify-content: flex-end; - } - } } - } } // modal-contents // 비밀번호 변경 -.change-password-guide { - span { - display: block; - margin-bottom: 5px; - font-size: 13px; - font-weight: 400; - color: #101010; - &:last-child { - margin-bottom: 0; +.change-password-guide{ + + span{ + display: block; + margin-bottom: 5px; + font-size: 13px; + font-weight: 400; + color: #101010; + &:last-child{ + margin-bottom: 0; + } } - } } -.change-password-box { - padding: 30px; - border-radius: 4px; - background: #f4f4f7; - margin-bottom: 20px; - .change-password-tit { - .tit-b { - font-size: 13px; - font-weight: 500; - color: #344356; +.change-password-box{ + padding: 30px; + border-radius: 4px; + background: #F4F4F7; + margin-bottom: 20px; + .change-password-tit{ + .tit-b{ + font-size: 13px; + font-weight: 500; + color: #344356; + } + .tit-s{ + font-size: 12px; + font-weight: 400; + color: #898989; + } } - .tit-s { - font-size: 12px; - font-weight: 400; - color: #898989; + .change-password-input{ + width: 100%; + .change-password{ + width: 100%; + height: 45px; + border-radius: 4px; + border: 1px solid #E9E9E9; + background-color: #fff; + padding: 0 10px; + font-size: 12px; + color: #364864; + font-family: 'Noto Sans JP', sans-serif; + &::placeholder{ + font-size: 12px; + } + } } - } - .change-password-input { - width: 100%; - .change-password { - width: 100%; - height: 45px; - border-radius: 4px; - border: 1px solid #e9e9e9; - background-color: #fff; - padding: 0 10px; - font-size: 12px; - color: #364864; - font-family: 'Noto Sans JP', sans-serif; - &::placeholder { - font-size: 12px; - } + .table-item-th{ + width: 145px; } - } - .table-item-th { - width: 145px; - } } -.form-table { - display: table; - table-layout: auto; - width: 100%; - .table-item { - display: table-row; - .table-item-th, - .table-item-td { - display: table-cell; - vertical-align: middle; - padding-bottom: 10px; +.form-table{ + display: table; + table-layout: auto; + width: 100%; + .table-item{ + display: table-row; + .table-item-th, + .table-item-td{ + display: table-cell; + vertical-align: middle; + padding-bottom: 10px; + } + &:last-child{ + .table-item-th, + .table-item-td{ + padding-bottom: 0; + } + } + .table-item-td{ + padding-left: 10px; + } } - &:last-child { - .table-item-th, - .table-item-td { - padding-bottom: 0; - } - } - .table-item-td { - padding-left: 10px; - } - } } // 주소찾기 팝업 -.address-input-wrap { - position: relative; - height: 45px; - padding: 0 40px 0 15px; - border-radius: 4px; - border: 1px solid #e9e9e9; - background: #fff; - margin-bottom: 20px; - input { - width: 100%; - height: 100%; - font-size: 13px; - font-weight: 400; - font-family: 'Noto Sans JP' sans-serif; - color: #868686; - &::placeholder { - color: #aeaeae; - font-size: 13px; - font-weight: 400; +.address-input-wrap{ + position: relative; + height: 45px; + padding: 0 40px 0 15px; + border-radius: 4px; + border: 1px solid #E9E9E9; + background: #FFF; + margin-bottom: 20px; + input{ + width: 100%; + height: 100%; + font-size: 13px; + font-weight: 400; + font-family: "Noto Sans JP" sans-serif; + color: #868686; + &::placeholder{ + color: #AEAEAE; + font-size: 13px; + font-weight: 400; + } + } + .search-btn{ + position: absolute; + top: 0; + right: 15px; + width: 21px; + height: 100%; + background: url(../../public/static/images/sub/address_search.svg)no-repeat center; + background-size: 21px 21px; } - } - .search-btn { - position: absolute; - top: 0; - right: 15px; - width: 21px; - height: 100%; - background: url(../../public/static/images/sub/address_search.svg) no-repeat center; - background-size: 21px 21px; - } } // 설계의뢰 불러오기 -.design-request-table { - margin-bottom: 20px; -} -.design-request-grid { - .design-request-grid-tit { - font-size: 13px; - font-weight: 600; - color: #101010; - margin-bottom: 15px; - } +.design-request-table{ + margin-bottom: 20px; } +.design-request-grid{ + .design-request-grid-tit{ + font-size: 13px; + font-weight: 600; + color: #101010; + margin-bottom: 15px; + } +} \ No newline at end of file diff --git a/src/styles/_table.scss b/src/styles/_table.scss index e6b46a7c..5aa068d0 100644 --- a/src/styles/_table.scss +++ b/src/styles/_table.scss @@ -1,281 +1,282 @@ -@mixin flexbox() { - display: flex; - align-items: center; +@mixin flexbox(){ + display: flex; + align-items: center; } -table { - .overflow-lab { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .al-l { - text-align: left !important; - } -} - -.flx-box { - @include flexbox; -} - -.common-table { - table { - table-layout: fixed; - border: 1px solid #ecf0f4; - border-radius: 3px; - border-collapse: collapse; - tbody { - th { - font-size: 13px; - font-weight: 500; - color: #344356; - padding: 14px 12px; - border: 1px solid #ecf0f4; - background-color: #f7f9fa; - vertical-align: middle; - } - td { - padding: 9px; - border: 1px solid #ecf0f4; - font-size: 13px; - font-weight: 400; - color: #45576f; - vertical-align: middle; - .radio-wrap { - flex: none; - @include flexbox; - } - .form-flex-wrap { - @include flexbox; - } - .date-picker-wrap { - width: 100%; - @include flexbox; - span { - margin: 0 4px; - } - } - } - } - } - &.bt-able { - margin-bottom: 30px; - } -} - -.infomation-table { - table { - border-top: 1px solid #dee3ea; - border-bottom: 1px solid #dee3ea; - border-collapse: collapse; - tbody { - tr { - th { - font-size: 13px; - color: #344356; - font-weight: 500; - padding: 18px 0; - border-bottom: 1px solid #f4f4f7; - .title { - margin-right: 8px; - } - } - td { - padding: 0 0 0 15px; - border-bottom: 1px solid #f4f4f7; - - .guide { - font-size: 13px; - color: #697c8f; - font-weight: normal; - margin-left: 15px; - margin-bottom: 0; - } - span { - font-size: 13px; - color: #697c8f; - font-weight: normal; - } - } - &:last-child { - th, - td { - border-bottom: none; - } - } - } - } - } - .tooltips { - display: block; - width: 14px; - height: 14px; - display: inline-block; - background: url(../../public/static/images/sub/tooltips.svg) no-repeat center; - background-size: cover; - cursor: pointer; - } -} - -.module-table { - table { - table-layout: fixed; - border-collapse: collapse; - thead { - display: table; - table-layout: fixed; - width: 100%; - th { - padding: 13px 0; - font-size: 13px; - color: #344356; - font-weight: 500; - border-bottom: 2px solid #e0e5eb; - text-align: center; - } - } - tbody { - display: block; - overflow-y: auto; - tr { - display: table; - table-layout: fixed; - width: 100%; - border: 1px solid #ecf0f4; - td { - padding: 10px 0px; - font-size: 13px; - color: #45576f; - font-weight: 400; - text-align: center; - } - } - &::-webkit-scrollbar { - width: 4px; - background-color: transparent; - } - &::-webkit-scrollbar-thumb { - background-color: #c1ccd7; - } - &::-webkit-scrollbar-track { - background-color: transparent; - } - } - &.small { - tbody { - height: 120px; - } - } - &.big { - td, - th { - &:nth-child(2) { - width: 121px; - } - } - tbody { - height: 160px; - td { - padding: 10px 20px; - } - } - } - } -} - -.roof-module-table { - table { - border-collapse: collapse; - thead { - th { - height: 40px; - padding: 0px 10px; - font-size: 12px; - line-height: 1.1; - color: #fff; - font-weight: 500; - border: 1px solid #505050; - vertical-align: middle; - background-color: rgba(255, 255, 255, 0.05); - text-align: center; - word-break: keep-all; - .d-check-box { - opacity: 0.5; - } - } - } - tbody { - tr { - cursor: pointer; - &.on { - background-color: #272727; - } - } - td { - height: 40px; - vertical-align: middle; - font-size: 12px; - color: #fff; - font-weight: 400; - border: 1px solid #505050; - padding: 0 10px; +table{ + .overflow-lab{ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; - .warning { - color: PCSオプションマスター; - } - .color-wrap { - display: flex; - align-items: center; - .color-box { - width: 14px; - height: 14px; - margin-right: 8px; - } - .name { - width: 0; - flex: 1; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - } - } } - } - &.overflow-y { - table { - table-layout: fixed; - border-collapse: collapse; - thead { - display: table; - table-layout: fixed; - width: 100%; - border-collapse: collapse; - } - tbody { - display: block; - max-height: 81px; - overflow-y: auto; - tr { - display: table; - table-layout: fixed; - width: 100%; - border-collapse: collapse; - margin-top: -1px; - } - &::-webkit-scrollbar { - width: 2px; - background-color: rgba(255, 255, 255, 0.05); - } - &::-webkit-scrollbar-thumb { - background-color: #c1ccd7; - } - &::-webkit-scrollbar-track { - background-color: rgba(255, 255, 255, 0.05); - } - } + .al-l{ + text-align: left !important; } - } } + +.flx-box{ + @include flexbox; +} + +.common-table{ + table{ + table-layout: fixed; + border: 1px solid #ECF0F4; + border-radius: 3px; + border-collapse:collapse; + tbody{ + th{ + font-size: 13px; + font-weight: 500; + color: #344356; + padding: 14px 12px; + border: 1px solid #ECF0F4 ; + background-color: #F7F9FA; + vertical-align: middle; + } + td{ + padding: 9px; + border: 1px solid #ECF0F4 ; + font-size: 13px; + font-weight: 400; + color: #45576F; + vertical-align: middle; + .radio-wrap{ + flex: none; + @include flexbox; + } + .form-flex-wrap{ + @include flexbox; + } + .date-picker-wrap{ + width: 100%; + @include flexbox; + span{ + margin: 0 4px; + } + } + } + } + } + &.bt-able{ + margin-bottom: 30px; + } +} + +.infomation-table{ + table{ + border-top: 1px solid #DEE3EA; + border-bottom: 1px solid #DEE3EA; + border-collapse:collapse; + tbody{ + tr{ + th{ + font-size: 13px; + color: #344356; + font-weight: 500; + padding: 18px 0; + border-bottom: 1px solid #F4F4F7; + .title{ + margin-right: 8px; + } + } + td{ + padding: 0 0 0 15px; + border-bottom: 1px solid #F4F4F7; + + .guide{ + font-size: 13px; + color: #697C8F; + font-weight: normal; + margin-left: 15px; + margin-bottom: 0; + } + span{ + font-size: 13px; + color: #697C8F; + font-weight: normal; + } + } + &:last-child{ + th,td{border-bottom: none;} + } + } + } + + } + .tooltips{ + position: relative; + display: block; + width: 14px; + height: 14px; + display: inline-block; + background: url(../../public/static/images/sub/tooltips.svg)no-repeat center; + background-size: cover; + cursor: pointer; + span{ + position: absolute; + white-space: nowrap; + } + } +} + +.module-table{ + table{ + table-layout: fixed; + border-collapse: collapse; + thead{ + display: table; + table-layout: fixed; + width: 100%; + th{ + padding: 13px 0; + font-size: 13px; + color: #344356; + font-weight: 500; + border-bottom: 2px solid #E0E5EB; + text-align: center; + } + } + tbody{ + display: block; + overflow-y: auto; + tr{ + display: table; + table-layout: fixed; + width: 100%; + border: 1px solid #ECF0F4; + td{ + padding: 10px 0px; + font-size: 13px; + color: #45576F; + font-weight: 400; + text-align: center; + } + } + &::-webkit-scrollbar { + width: 4px; + background-color: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: #C1CCD7; + } + &::-webkit-scrollbar-track { + background-color: transparent; + } + } + &.small{ + tbody{height: 120px;} + } + &.big{ + td, + th{ + &:nth-child(2){ + width: 121px; + } + } + tbody{ + height: 160px; + td{ + padding: 10px 20px; + } + } + } + } +} + +.roof-module-table{ + table{ + border-collapse: collapse; + thead{ + th{ + height: 40px; + padding: 0px 10px; + font-size: 12px; + line-height: 1.1; + color: #fff; + font-weight: 500; + border: 1px solid #505050; + vertical-align: middle; + background-color: rgba(255, 255, 255, 0.05); + text-align: center; + word-break: keep-all; + .d-check-box{ + opacity: 0.5; + } + } + } + tbody{ + tr{ + cursor: pointer; + &.on{ + background-color: #272727; + } + } + td{ + height: 40px; + vertical-align: middle; + font-size: 12px; + color: #fff; + font-weight: 400; + border: 1px solid #505050; + padding: 0 10px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + .warning{ + color: PCSオプションマスター; + } + .color-wrap{ + display: flex; + align-items: center; + .color-box{ + width: 14px; + height: 14px; + margin-right: 8px; + } + .name{ + width: 0; + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + } + } + } + } + &.overflow-y{ + table{ + table-layout: fixed; + border-collapse: collapse; + thead{ + display: table; + table-layout: fixed; + width: 100%; + border-collapse: collapse; + } + tbody{ + display: block; + max-height: 81px; + overflow-y: auto; + tr{ + display: table; + table-layout: fixed; + width: 100%; + border-collapse: collapse; + margin-top: -1px; + } + &::-webkit-scrollbar { + width: 2px; + background-color: rgba(255, 255, 255, 0.05); + } + &::-webkit-scrollbar-thumb { + background-color: #C1CCD7; + } + &::-webkit-scrollbar-track { + background-color: rgba(255, 255, 255, 0.05); + } + } + } + } +} \ No newline at end of file diff --git a/src/styles/contents.scss b/src/styles/contents.scss index 08c322e9..613c0644 100644 --- a/src/styles/contents.scss +++ b/src/styles/contents.scss @@ -2,4 +2,4 @@ @import '_modal.scss'; @import '_submodal.scss'; @import '_table.scss'; -@import '_canvasside.scss'; +@import '_canvasside.scss'; \ No newline at end of file diff --git a/src/styles/style.scss b/src/styles/style.scss index b3b49ed9..1841ebb9 100644 --- a/src/styles/style.scss +++ b/src/styles/style.scss @@ -1,2 +1 @@ -@import '_main.scss'; -@import '_contents'; \ No newline at end of file +@import '_main.scss'; \ No newline at end of file From f357ada22e3f6b0e3d65cc3d97d00ab2c6a94f8f Mon Sep 17 00:00:00 2001 From: minsik Date: Fri, 11 Oct 2024 15:42:57 +0900 Subject: [PATCH 23/27] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/canvas/additional-edit02.svg | 115 ++++++++++++++++ .../images/canvas/additional_bundle-del01.svg | 106 +++++++++++++++ .../images/canvas/additional_bundle-del03.svg | 115 ++++++++++++++++ .../canvas/additional_bundle-edit01.svg | 124 ++++++++++++++++++ .../canvas/additional_bundle-edit02.svg | 124 ++++++++++++++++++ .../static/images/canvas/additional_del02.svg | 103 +++++++++++++++ .../static/images/canvas/additional_del03.svg | 112 ++++++++++++++++ .../static/images/canvas/additional_del04.svg | 94 +++++++++++++ public/static/images/sub/attachment_ico.svg | 11 ++ public/static/images/sub/click_check_ico.svg | 4 + public/static/images/sub/minus_btn.svg | 6 + public/static/images/sub/plus_btn.svg | 5 + 12 files changed, 919 insertions(+) create mode 100644 public/static/images/sub/attachment_ico.svg create mode 100644 public/static/images/sub/click_check_ico.svg create mode 100644 public/static/images/sub/minus_btn.svg create mode 100644 public/static/images/sub/plus_btn.svg diff --git a/public/static/images/canvas/additional-edit02.svg b/public/static/images/canvas/additional-edit02.svg index e69de29b..5d3a03cd 100644 --- a/public/static/images/canvas/additional-edit02.svg +++ b/public/static/images/canvas/additional-edit02.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del01.svg b/public/static/images/canvas/additional_bundle-del01.svg index e69de29b..29ad58c0 100644 --- a/public/static/images/canvas/additional_bundle-del01.svg +++ b/public/static/images/canvas/additional_bundle-del01.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-del03.svg b/public/static/images/canvas/additional_bundle-del03.svg index e69de29b..082cae56 100644 --- a/public/static/images/canvas/additional_bundle-del03.svg +++ b/public/static/images/canvas/additional_bundle-del03.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-edit01.svg b/public/static/images/canvas/additional_bundle-edit01.svg index e69de29b..38c3846c 100644 --- a/public/static/images/canvas/additional_bundle-edit01.svg +++ b/public/static/images/canvas/additional_bundle-edit01.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_bundle-edit02.svg b/public/static/images/canvas/additional_bundle-edit02.svg index e69de29b..8b2c9f7b 100644 --- a/public/static/images/canvas/additional_bundle-edit02.svg +++ b/public/static/images/canvas/additional_bundle-edit02.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del02.svg b/public/static/images/canvas/additional_del02.svg index e69de29b..575dae2b 100644 --- a/public/static/images/canvas/additional_del02.svg +++ b/public/static/images/canvas/additional_del02.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del03.svg b/public/static/images/canvas/additional_del03.svg index e69de29b..2d071afd 100644 --- a/public/static/images/canvas/additional_del03.svg +++ b/public/static/images/canvas/additional_del03.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/canvas/additional_del04.svg b/public/static/images/canvas/additional_del04.svg index e69de29b..b5dc6431 100644 --- a/public/static/images/canvas/additional_del04.svg +++ b/public/static/images/canvas/additional_del04.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/images/sub/attachment_ico.svg b/public/static/images/sub/attachment_ico.svg new file mode 100644 index 00000000..7e622a4e --- /dev/null +++ b/public/static/images/sub/attachment_ico.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/static/images/sub/click_check_ico.svg b/public/static/images/sub/click_check_ico.svg new file mode 100644 index 00000000..4fc2dae1 --- /dev/null +++ b/public/static/images/sub/click_check_ico.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/static/images/sub/minus_btn.svg b/public/static/images/sub/minus_btn.svg new file mode 100644 index 00000000..e31ddaf9 --- /dev/null +++ b/public/static/images/sub/minus_btn.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/static/images/sub/plus_btn.svg b/public/static/images/sub/plus_btn.svg new file mode 100644 index 00000000..7f17a1f1 --- /dev/null +++ b/public/static/images/sub/plus_btn.svg @@ -0,0 +1,5 @@ + + + + + From 0c6bd177105afaabdf7b3c032a3bfb3e0354ef77 Mon Sep 17 00:00:00 2001 From: minsik Date: Fri, 11 Oct 2024 15:47:16 +0900 Subject: [PATCH 24/27] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/_contents.scss | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/styles/_contents.scss b/src/styles/_contents.scss index 3e5ab0df..dc02fc85 100644 --- a/src/styles/_contents.scss +++ b/src/styles/_contents.scss @@ -388,10 +388,9 @@ canvas{ position: absolute; top: 0; - left: 50%; - transform: translateX(-50%); - width: 1600px; - height: 1000px; + left: 0; + width: 100%; + height: 100%; } } From c9ae8f87e0274102c1d5d49c54a92170282bf8a5 Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Fri, 11 Oct 2024 16:35:36 +0900 Subject: [PATCH 25/27] =?UTF-8?q?refactor:=20canvas=20plan=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=EC=8B=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasLayout.jsx | 43 +++++++------------- src/hooks/usePlan.js | 47 +++++++++++++++++----- src/store/canvasAtom.js | 6 +++ 3 files changed, 56 insertions(+), 40 deletions(-) diff --git a/src/components/floor-plan/CanvasLayout.jsx b/src/components/floor-plan/CanvasLayout.jsx index 98f5f36d..7a3e9323 100644 --- a/src/components/floor-plan/CanvasLayout.jsx +++ b/src/components/floor-plan/CanvasLayout.jsx @@ -7,15 +7,15 @@ import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { usePlan } from '@/hooks/usePlan' import { globalLocaleStore } from '@/store/localeAtom' -import { currentCanvasPlanState, initCanvasPlansState } from '@/store/canvasAtom' +import { currentCanvasPlanState, initCanvasPlansState, plansState } from '@/store/canvasAtom' import { sessionStore } from '@/store/commonAtom' export default function CanvasLayout() { const [objectNo, setObjectNo] = useState('test123240822001') // 이후 삭제 필요 - const [plans, setPlans] = useState([]) const [planNum, setPlanNum] = useState(0) const [currentCanvasPlan, setCurrentCanvasPlan] = useRecoilState(currentCanvasPlanState) const [initCanvasPlans, setInitCanvasPlans] = useRecoilState(initCanvasPlansState) + const [plans, setPlans] = useRecoilState(plansState) const globalLocaleState = useRecoilValue(globalLocaleStore) const sessionState = useRecoilValue(sessionStore) @@ -32,40 +32,25 @@ export default function CanvasLayout() { html: getMessage('common.message.confirm.save') + `
${currentCanvasPlan.name}`, type: 'confirm', confirmFn: async () => { - saveCanvas(sessionState.userId) - /** - * TODO: 신규 canvas plan 저장 시 id, name 등 데이터 동기화 필요 (40~51Line) - */ - initCanvasPlans.map((initPlan) => { - if ('isNew' in initPlan) { - // console.log('================ isNew initPlan: ', initPlan) - setPlans((plans) => - plans.map((plan) => { - initPlan.isNew === plan.id - ? { ...plan, id: initPlan.id, name: initPlan.name, canvasStatus: initPlan.canvasStatus, isCurrent: plan.id === newCurrentId } - : { ...plan, isCurrent: plan.id === newCurrentId } - }), - ) - } - }) + await saveCanvas(sessionState.userId) + updateCurrentPlan(newCurrentId) }, denyFn: () => { - setPlans((plans) => - plans.map((plan) => { - return { ...plan, isCurrent: plan.id === newCurrentId } - }), - ) + updateCurrentPlan(newCurrentId) }, }) } else { - setPlans((plans) => - plans.map((plan) => { - return { ...plan, isCurrent: plan.id === newCurrentId } - }), - ) + updateCurrentPlan(newCurrentId) } } } + const updateCurrentPlan = (newCurrentId) => { + setPlans((plans) => + plans.map((plan) => { + return { ...plan, isCurrent: plan.id === newCurrentId } + }), + ) + } useEffect(() => { setCurrentCanvasPlan(plans.find((plan) => plan.isCurrent) || null) }, [plans]) @@ -86,7 +71,7 @@ export default function CanvasLayout() { // console.error('[DELETE] canvas-statuses res error :::::::: %o', error) }) } else { - setPlans(plans.filter((plan) => plan.id !== id)) + setPlans((plans) => plans.filter((plan) => plan.id !== id)) swalFire({ text: getMessage('common.message.delete') }) } diff --git a/src/hooks/usePlan.js b/src/hooks/usePlan.js index e861f9f8..c7f6620e 100644 --- a/src/hooks/usePlan.js +++ b/src/hooks/usePlan.js @@ -1,5 +1,5 @@ import { useRecoilState } from 'recoil' -import { canvasState, currentCanvasPlanState, initCanvasPlansState } from '@/store/canvasAtom' +import { canvasState, currentCanvasPlanState, initCanvasPlansState, plansState } from '@/store/canvasAtom' import { useAxios } from '@/hooks/useAxios' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' @@ -8,6 +8,7 @@ export function usePlan() { const [canvas, setCanvas] = useRecoilState(canvasState) const [currentCanvasPlan, setCurrentCanvasPlan] = useRecoilState(currentCanvasPlanState) const [initCanvasPlans, setInitCanvasPlans] = useRecoilState(initCanvasPlansState) + const [plans, setPlans] = useRecoilState(plansState) const { swalFire } = useSwal() const { getMessage } = useMessage() const { get, promisePost, promisePut, promiseDel } = useAxios() @@ -77,11 +78,12 @@ export function usePlan() { removeMouseLines() const canvasStr = addCanvas() const canvasStatus = dbToCanvasFormat(canvasToDbFormat(canvasStr)) - if (JSON.parse(canvasStr).objects.length === 0 && currentCanvasPlan.canvasStatus === undefined) { - // 빈 캔버스 + const initPlanData = initCanvasPlans.find((plan) => plan.id === currentCanvasPlan.id) + if (JSON.parse(canvasStr).objects.length === 0 && initPlanData === undefined) { + // 저장 안 된 빈 캔버스 return false - } else if (canvasStatus === currentCanvasPlan.canvasStatus) { - // 변경사항 없는 캔버스 + } else if (initPlanData && canvasStatus === initPlanData.canvasStatus) { + // 저장 되어있고 변경사항 없는 캔버스 return false } else { return true @@ -121,13 +123,16 @@ export function usePlan() { canvasStatus: canvasToDbFormat(canvasStatus), } - await promisePut({ url: '/api/canvas-management/canvas-statuses', data: planData }) + return await promisePut({ url: '/api/canvas-management/canvas-statuses', data: planData }) .then((res) => { swalFire({ text: getMessage('common.message.save') }) // console.log('[PUT] canvas-statuses res :::::::: %o', res) setInitCanvasPlans((initCanvasPlans) => initCanvasPlans.map((plan) => (plan.id === currentCanvasPlan.id ? { ...plan, canvasStatus: canvasStatus } : plan)), ) + setPlans((plans) => + plans.map((plan) => (plan.id === currentCanvasPlan.id ? { ...plan, canvasStatus: canvasStatus } : plan)), + ) }) .catch((error) => { swalFire({ text: error.message, icon: 'error' }) @@ -142,14 +147,34 @@ export function usePlan() { canvasStatus: canvasToDbFormat(canvasStatus), } - await promisePost({ url: '/api/canvas-management/canvas-statuses', data: planData }) + return await promisePost({ url: '/api/canvas-management/canvas-statuses', data: planData }) .then((res) => { swalFire({ text: getMessage('common.message.save') }) - setInitCanvasPlans([ - ...initCanvasPlans, - { id: res.data, name: currentCanvasPlan.objectNo + '-' + res.data, userId: userId, canvasStatus: canvasStatus, isNew: currentCanvasPlan.id }, - ]) // console.log('[POST] canvas-statuses response :::::::: %o', res) + setInitCanvasPlans((initCanvasPlans) => [ + ...initCanvasPlans, + { + id: res.data, + name: currentCanvasPlan.objectNo + '-' + res.data, + userId: userId, + canvasStatus: canvasStatus, + isNew: currentCanvasPlan.id, + }, + ]) + setPlans((plans) => + plans.map((plan) => + plan.id === currentCanvasPlan.id + ? { + ...plan, + id: res.data, + name: currentCanvasPlan.objectNo + '-' + res.data, + userId: userId, + canvasStatus: canvasStatus, + isNew: currentCanvasPlan.id, + } + : plan, + ), + ) }) .catch((error) => { swalFire({ text: error.message, icon: 'error' }) diff --git a/src/store/canvasAtom.js b/src/store/canvasAtom.js index 9fb440c6..c622283b 100644 --- a/src/store/canvasAtom.js +++ b/src/store/canvasAtom.js @@ -264,6 +264,12 @@ export const currentCanvasPlanState = atom({ default: {}, }) +// 전체 canvas plan +export const plansState = atom({ + key: 'plan', + default: [], +}) + export const tempGridModeState = atom({ key: 'tempGridModeState', default: false, From 9cabff9a08c54d29e44c423cf03ad8c3fbcf20ce Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 11 Oct 2024 17:39:23 +0900 Subject: [PATCH 26/27] =?UTF-8?q?=EB=B0=B0=EC=B9=98=EB=A9=B4=20=EC=9E=84?= =?UTF-8?q?=EC=8B=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/common.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/common.js b/src/common/common.js index f9ca6fff..ae96db06 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -17,6 +17,7 @@ export const MENU = { SLOPE_SETTING: 'slopeSetting', // 경사 설정 BATCH_DRAWING: 'batchDrawing', // 배치면 그리기 SURFACE_SHAPE_BATCH: 'surfaceShapeBatch', // 면형상 배치 + SURFACE_SHAPE_BATCH_TEMP: 'surfaceShapeBatchTemp', // 면형상 배치 임시 OBJECT_BATCH: 'objectBatch', // 오브젝트 배치 ALL_REMOVE: 'allRemove', // 전체 삭제 DEFAULT: 'batchCanvasDefault', // default From 090458c7d0938fe6830e478004236424472e9332 Mon Sep 17 00:00:00 2001 From: yjnoh Date: Fri, 11 Oct 2024 18:07:06 +0900 Subject: [PATCH 27/27] =?UTF-8?q?=EC=9A=B0=ED=81=B4=EB=A6=AD=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/context-menu/QContextMenu.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/common/context-menu/QContextMenu.jsx b/src/components/common/context-menu/QContextMenu.jsx index bb721810..a86e40af 100644 --- a/src/components/common/context-menu/QContextMenu.jsx +++ b/src/components/common/context-menu/QContextMenu.jsx @@ -25,19 +25,19 @@ export default function QContextMenu(props) { if (!contextRef.current) return const handleContextMenu = (e) => { - e.preventDefault() //기존 contextmenu 막고 + // e.preventDefault() //기존 contextmenu 막고 setContextMenu({ visible: true, x: e.pageX, y: e.pageY }) console.log(111, canvasProps) canvasProps?.upperCanvasEl.removeEventListener('contextmenu', handleContextMenu) //한번 노출 후 이벤트 삭제 } const handleClick = (e) => { - e.preventDefault() + // e.preventDefault() setContextMenu({ ...contextMenu, visible: false }) } const handleOutsideClick = (e) => { - e.preventDefault() + // e.preventDefault() if (contextMenu.visible && !ref.current.contains(e.target)) { setContextMenu({ ...contextMenu, visible: false }) }