diff --git a/public/static/images/canvas/allocation_delete.svg b/public/static/images/canvas/allocation_delete.svg
new file mode 100644
index 00000000..711a241e
--- /dev/null
+++ b/public/static/images/canvas/allocation_delete.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/static/images/canvas/allocation_edit.svg b/public/static/images/canvas/allocation_edit.svg
new file mode 100644
index 00000000..795d10f9
--- /dev/null
+++ b/public/static/images/canvas/allocation_edit.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/static/images/canvas/allocation_icon01_black.svg b/public/static/images/canvas/allocation_icon01_black.svg
new file mode 100644
index 00000000..01829a32
--- /dev/null
+++ b/public/static/images/canvas/allocation_icon01_black.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/static/images/canvas/allocation_icon01_white.svg b/public/static/images/canvas/allocation_icon01_white.svg
new file mode 100644
index 00000000..5618848e
--- /dev/null
+++ b/public/static/images/canvas/allocation_icon01_white.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/static/images/canvas/allocation_icon02_black.svg b/public/static/images/canvas/allocation_icon02_black.svg
new file mode 100644
index 00000000..57c6173b
--- /dev/null
+++ b/public/static/images/canvas/allocation_icon02_black.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/static/images/canvas/allocation_icon02_white.svg b/public/static/images/canvas/allocation_icon02_white.svg
new file mode 100644
index 00000000..17211b04
--- /dev/null
+++ b/public/static/images/canvas/allocation_icon02_white.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/static/images/canvas/eaves_icon01.svg b/public/static/images/canvas/eaves_icon01.svg
new file mode 100644
index 00000000..da520069
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon01.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/canvas/eaves_icon02.svg b/public/static/images/canvas/eaves_icon02.svg
new file mode 100644
index 00000000..0addbc04
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon02.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/canvas/eaves_icon03.svg b/public/static/images/canvas/eaves_icon03.svg
new file mode 100644
index 00000000..b95b49fc
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon03.svg
@@ -0,0 +1,15 @@
+
diff --git a/public/static/images/canvas/eaves_icon04.svg b/public/static/images/canvas/eaves_icon04.svg
new file mode 100644
index 00000000..ac08ce05
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon04.svg
@@ -0,0 +1,9 @@
+
diff --git a/public/static/images/canvas/eaves_icon05.svg b/public/static/images/canvas/eaves_icon05.svg
new file mode 100644
index 00000000..649a6058
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon05.svg
@@ -0,0 +1,10 @@
+
diff --git a/public/static/images/canvas/eaves_icon06.svg b/public/static/images/canvas/eaves_icon06.svg
new file mode 100644
index 00000000..a2f17801
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon06.svg
@@ -0,0 +1,18 @@
+
diff --git a/public/static/images/canvas/eaves_icon07.svg b/public/static/images/canvas/eaves_icon07.svg
new file mode 100644
index 00000000..1f101d56
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon07.svg
@@ -0,0 +1,23 @@
+
diff --git a/public/static/images/canvas/eaves_icon08.svg b/public/static/images/canvas/eaves_icon08.svg
new file mode 100644
index 00000000..8a2529de
--- /dev/null
+++ b/public/static/images/canvas/eaves_icon08.svg
@@ -0,0 +1,15 @@
+
diff --git a/public/static/images/canvas/shape_menu01.svg b/public/static/images/canvas/shape_menu01.svg
new file mode 100644
index 00000000..6fbe44cc
--- /dev/null
+++ b/public/static/images/canvas/shape_menu01.svg
@@ -0,0 +1,34 @@
+
diff --git a/public/static/images/canvas/shape_menu02.svg b/public/static/images/canvas/shape_menu02.svg
new file mode 100644
index 00000000..36a5eb41
--- /dev/null
+++ b/public/static/images/canvas/shape_menu02.svg
@@ -0,0 +1,31 @@
+
diff --git a/public/static/images/canvas/shape_menu03.svg b/public/static/images/canvas/shape_menu03.svg
new file mode 100644
index 00000000..ae7701c3
--- /dev/null
+++ b/public/static/images/canvas/shape_menu03.svg
@@ -0,0 +1,31 @@
+
diff --git a/public/static/images/canvas/shape_menu04.svg b/public/static/images/canvas/shape_menu04.svg
new file mode 100644
index 00000000..e23282c5
--- /dev/null
+++ b/public/static/images/canvas/shape_menu04.svg
@@ -0,0 +1,30 @@
+
diff --git a/public/static/images/canvas/shape_menu05.svg b/public/static/images/canvas/shape_menu05.svg
new file mode 100644
index 00000000..500d6bc6
--- /dev/null
+++ b/public/static/images/canvas/shape_menu05.svg
@@ -0,0 +1,29 @@
+
diff --git a/public/static/images/canvas/shape_menu06.svg b/public/static/images/canvas/shape_menu06.svg
new file mode 100644
index 00000000..a13e1b6c
--- /dev/null
+++ b/public/static/images/canvas/shape_menu06.svg
@@ -0,0 +1,29 @@
+
diff --git a/public/static/images/canvas/shape_menu07.svg b/public/static/images/canvas/shape_menu07.svg
new file mode 100644
index 00000000..08119e5e
--- /dev/null
+++ b/public/static/images/canvas/shape_menu07.svg
@@ -0,0 +1,29 @@
+
diff --git a/public/static/images/canvas/shape_menu08.svg b/public/static/images/canvas/shape_menu08.svg
new file mode 100644
index 00000000..4588b3bb
--- /dev/null
+++ b/public/static/images/canvas/shape_menu08.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/components/floor-plan/CanvasMenu.jsx b/src/components/floor-plan/CanvasMenu.jsx
index 975c944b..91c5179c 100644
--- a/src/components/floor-plan/CanvasMenu.jsx
+++ b/src/components/floor-plan/CanvasMenu.jsx
@@ -10,7 +10,7 @@ import QSelectBox from '@/components/common/select/QSelectBox'
import { useMessage } from '@/hooks/useMessage'
import { usePlan } from '@/hooks/usePlan'
import { useSwal } from '@/hooks/useSwal'
-import { canvasState, canvasZoomState, currentMenuState, currentCanvasPlanState, verticalHorizontalModeState } from '@/store/canvasAtom'
+import { canvasState, canvasZoomState, currentCanvasPlanState, currentMenuState, verticalHorizontalModeState } from '@/store/canvasAtom'
import { sessionStore } from '@/store/commonAtom'
import { outerLinePointsState } from '@/store/outerLineAtom'
import { appMessageStore, globalLocaleStore } from '@/store/localeAtom'
@@ -31,7 +31,7 @@ const canvasMenus = [
]
export default function CanvasMenu(props) {
- const { setShowCanvasSettingModal, showOutlineModal, setShowOutlineModal, setShowPlaceShapeModal } = props
+ const { setShowCanvasSettingModal, showOutlineModal, setShowOutlineModal, setShowPlaceShapeModal, setShowRoofShapeSettingModal } = props
const [menuNumber, setMenuNumber] = useState(null)
const [type, setType] = useState('')
@@ -75,6 +75,7 @@ export default function CanvasMenu(props) {
const menuProps = {
setShowOutlineModal,
setShowPlaceShapeModal,
+ setShowRoofShapeSettingModal,
type,
}
diff --git a/src/components/floor-plan/FloorPlan.jsx b/src/components/floor-plan/FloorPlan.jsx
index ee27cbcd..38d31f9d 100644
--- a/src/components/floor-plan/FloorPlan.jsx
+++ b/src/components/floor-plan/FloorPlan.jsx
@@ -14,12 +14,14 @@ import WallLineSetting from '@/components/floor-plan/modal/outerlinesetting/Wall
import PropertiesSetting from '@/components/floor-plan/modal/outerlinesetting/PropertiesSetting'
import PlacementShapeSetting from '@/components/floor-plan/modal/placementShape/PlacementShapeSetting'
import GridColorSetting from './modal/grid/GridColorSetting'
+import RoofShapeSetting from '@/components/floor-plan/modal/roofShape/RoofShapeSetting'
export default function FloorPlan() {
const [showCanvasSettingModal, setShowCanvasSettingModal] = useState(false)
const [showOutlineModal, setShowOutlineModal] = useState(false)
const [showPlaceShapeModal, setShowPlaceShapeModal] = useState(false)
const [showPropertiesSettingModal, setShowPropertiesSettingModal] = useState(false)
+ const [showRoofShapeSettingModal, setShowRoofShapeSettingModal] = useState(false)
const globalLocaleState = useRecoilValue(globalLocaleStore)
const { get } = useAxios(globalLocaleState)
@@ -47,6 +49,7 @@ export default function FloorPlan() {
showOutlineModal,
setShowOutlineModal,
setShowPlaceShapeModal,
+ setShowRoofShapeSettingModal,
}
useEffect(() => {
@@ -106,6 +109,7 @@ export default function FloorPlan() {
{showColorPickerModal && }
{showPropertiesSettingModal && }
{showPlaceShapeModal && }
+ {showRoofShapeSettingModal && }
>
diff --git a/src/components/floor-plan/MenuDepth01.jsx b/src/components/floor-plan/MenuDepth01.jsx
index 925978e6..43a059f0 100644
--- a/src/components/floor-plan/MenuDepth01.jsx
+++ b/src/components/floor-plan/MenuDepth01.jsx
@@ -7,7 +7,7 @@ import { currentMenuState } from '@/store/canvasAtom'
import { useSetRecoilState } from 'recoil'
export default function MenuDepth01(props) {
- const { setShowOutlineModal, type, setShowPlaceShapeModal } = props
+ const { setShowOutlineModal, type, setShowPlaceShapeModal, setShowRoofShapeSettingModal } = props
const { getMessage } = useMessage()
const [activeMenu, setActiveMenu] = useState()
const setCurrentMenu = useSetRecoilState(currentMenuState)
@@ -18,6 +18,7 @@ export default function MenuDepth01(props) {
if (type === 'outline') {
setShowPlaceShapeModal(false)
setShowOutlineModal(id === 0)
+ setShowRoofShapeSettingModal(id === 1)
}
}
diff --git a/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.js b/src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
similarity index 100%
rename from src/components/floor-plan/modal/placementShape/PlacementShapeSetting.js
rename to src/components/floor-plan/modal/placementShape/PlacementShapeSetting.jsx
diff --git a/src/components/floor-plan/modal/roofShape/RoofShapeSetting.jsx b/src/components/floor-plan/modal/roofShape/RoofShapeSetting.jsx
new file mode 100644
index 00000000..517a7ba3
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/RoofShapeSetting.jsx
@@ -0,0 +1,58 @@
+import { useMessage } from '@/hooks/useMessage'
+import WithDraggable from '@/components/common/draggable/WithDraggable'
+import Ridge from '@/components/floor-plan/modal/roofShape/type/Ridge'
+import Pattern from '@/components/floor-plan/modal/roofShape/type/Pattern'
+import Side from '@/components/floor-plan/modal/roofShape/type/Side'
+import { useState } from 'react'
+import Image from 'next/image'
+import Direction from '@/components/floor-plan/modal/roofShape/type/Direction'
+
+export default function RoofShapeSetting({ setShowRoofShapeSettingModal }) {
+ const { getMessage } = useMessage()
+ const [shapeNum, setShapeNum] = useState(1)
+ const shapeMenu = [
+ { id: 1, name: getMessage('modal.roof.shape.setting.ridge') }, // 용마루
+ { id: 2, name: getMessage('modal.roof.shape.setting.patten.a') }, // 패턴A
+ { id: 3, name: getMessage('modal.roof.shape.setting.patten.b') }, // 패턴B
+ { id: 4, name: getMessage('modal.roof.shape.setting.side') }, // 변별로 설정
+ { id: 5, name: getMessage('commons.west') }, // 서
+ { id: 6, name: getMessage('commons.east') }, // 서
+ { id: 7, name: getMessage('commons.south') }, // 서
+ { id: 8, name: getMessage('commons.north') }, // 북
+ ]
+
+ return (
+
+
+
+
{getMessage('modal.roof.shape.setting')}
+
+
+
+
+ {shapeMenu.map((item) => (
+
+ ))}
+
+
+
{getMessage('setting')}
+ {shapeNum === 1 &&
}
+ {(shapeNum === 2 || shapeNum === 3) &&
}
+ {shapeNum === 4 &&
}
+ {(shapeNum === 5 || shapeNum === 6 || shapeNum === 7 || shapeNum === 8) &&
}
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/Direction.jsx b/src/components/floor-plan/modal/roofShape/type/Direction.jsx
new file mode 100644
index 00000000..a02258f9
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/Direction.jsx
@@ -0,0 +1,45 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Direction() {
+ const { getMessage } = useMessage()
+ return (
+
+
+
+ {getMessage('slope')}
+
+
+
+
+
{getMessage('size')}
+
+
+
+ {getMessage('eaves.offset')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('gable.offset')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('windage.width')}
+
+
+
+
+
mm
+
+
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/Pattern.jsx b/src/components/floor-plan/modal/roofShape/type/Pattern.jsx
new file mode 100644
index 00000000..606c154d
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/Pattern.jsx
@@ -0,0 +1,36 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Pattern() {
+ const { getMessage } = useMessage()
+ return (
+
+
+
+ {getMessage('slope')}
+
+
+
+
+
{getMessage('size')}
+
+
+
+ {getMessage('eaves.offset')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('gable.offset')}
+
+
+
+
+
mm
+
+
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/Ridge.jsx b/src/components/floor-plan/modal/roofShape/type/Ridge.jsx
new file mode 100644
index 00000000..7897046c
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/Ridge.jsx
@@ -0,0 +1,27 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Ridge() {
+ const { getMessage } = useMessage()
+ return (
+
+
+
+ {getMessage('slope')}
+
+
+
+
+
{getMessage('size')}
+
+
+
+ {getMessage('eaves.offset')}
+
+
+
+
+
mm
+
+
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/Side.jsx b/src/components/floor-plan/modal/roofShape/type/Side.jsx
new file mode 100644
index 00000000..3fc1737c
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/Side.jsx
@@ -0,0 +1,46 @@
+import { useState } from 'react'
+import { useMessage } from '@/hooks/useMessage'
+import Eaves from '@/components/floor-plan/modal/roofShape/type/option/Eaves'
+import Gable from '@/components/floor-plan/modal/roofShape/type/option/Gable'
+import HipAndGable from '@/components/floor-plan/modal/roofShape/type/option/HipAndGable'
+import Wall from '@/components/floor-plan/modal/roofShape/type/option/Wall'
+import Jerkinhead from '@/components/floor-plan/modal/roofShape/type/option/Jerkinhead'
+import Shed from '@/components/floor-plan/modal/roofShape/type/option/Shed'
+
+export default function Side() {
+ const [buttonAct, setButtonAct] = useState(1)
+ const { getMessage } = useMessage()
+ const buttonMenu = [
+ { id: 1, name: getMessage('eaves') },
+ { id: 2, name: getMessage('gable') },
+ { id: 3, name: getMessage('wall') },
+ { id: 4, name: getMessage('hipandgable') },
+ { id: 5, name: getMessage('jerkinhead') },
+ { id: 6, name: getMessage('shed') },
+ ]
+ return (
+
+
+
+ {buttonMenu.map((item) => (
+
+ ))}
+
+
+
+ {buttonAct === 1 && }
+ {buttonAct === 2 && }
+ {buttonAct === 3 && }
+ {buttonAct === 4 && }
+ {buttonAct === 5 && }
+ {buttonAct === 6 && }
+
+
+
+
+
+
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx b/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx
new file mode 100644
index 00000000..303dad55
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/Eaves.jsx
@@ -0,0 +1,27 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Eaves() {
+ const { getMessage } = useMessage()
+ return (
+ <>
+
+
+ {getMessage('slope')}
+
+
+
+
+
{getMessage('size')}
+
+
+
+ {getMessage('eaves.offset')}
+
+
+
+
+
mm
+
+ >
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx b/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx
new file mode 100644
index 00000000..63092550
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/Gable.jsx
@@ -0,0 +1,16 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Gable() {
+ const { getMessage } = useMessage()
+ return (
+ <>
+
+
{getMessage('gable.offset')}
+
+
+
+
mm
+
+ >
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx b/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx
new file mode 100644
index 00000000..ed2e1b60
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/HipAndGable.jsx
@@ -0,0 +1,36 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function HipAndGable() {
+ const { getMessage } = useMessage()
+ return (
+ <>
+
+
+ {getMessage('slope')}
+
+
+
+
+
{getMessage('size')}
+
+
+
+ {getMessage('eaves.offset')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('gable.offset')}
+
+
+
+
+
mm
+
+ >
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx b/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx
new file mode 100644
index 00000000..d5737470
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/Jerkinhead.jsx
@@ -0,0 +1,36 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Jerkinhead() {
+ const { getMessage } = useMessage()
+ return (
+ <>
+
+
+ {getMessage('gable.offset')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('jerkinhead.width')}
+
+
+
+
+
mm
+
+
+
+ {getMessage('jerkinhead.slope')}
+
+
+
+
+
{getMessage('size')}
+
+ >
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx
new file mode 100644
index 00000000..c4fd4333
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/Shed.jsx
@@ -0,0 +1,16 @@
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Shed() {
+ const { getMessage } = useMessage()
+ return (
+ <>
+
+
{getMessage('shed.width')}
+
+
+
+
mm
+
+ >
+ )
+}
diff --git a/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx b/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx
new file mode 100644
index 00000000..6b716892
--- /dev/null
+++ b/src/components/floor-plan/modal/roofShape/type/option/Wall.jsx
@@ -0,0 +1,38 @@
+import { useState } from 'react'
+import { useMessage } from '@/hooks/useMessage'
+
+export default function Wall() {
+ const [hasSleeve, setHasSleeve] = useState('0')
+ const { getMessage } = useMessage()
+ return (
+ <>
+ {hasSleeve}
+
+
+
+
+ setHasSleeve(e.target.value)} />
+
+
+
+
+
+
+
+ setHasSleeve(e.target.value)} />
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/locales/ja.json b/src/locales/ja.json
index a1285410..71c6fb8d 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -31,6 +31,11 @@
"modal.placement.initial.setting.roof.material": "屋根材の選択(単位:mm)",
"modal.placement.initial.setting.roof.material.info": "対応可能な屋根材や足場は限定されますので、必ず事前マニュアルをご確認ください。",
"modal.placement.initial.setting.rafter": "垂木の間隔",
+ "modal.roof.shape.setting": "屋根形状の設定",
+ "modal.roof.shape.setting.ridge": "龍丸屋根",
+ "modal.roof.shape.setting.patten.a": "Aパターン",
+ "modal.roof.shape.setting.patten.b": "Bパターン",
+ "modal.roof.shape.setting.side": "別に設定",
"plan.menu.roof.cover": "지붕덮개",
"plan.menu.roof.cover.outline.drawing": "外壁線を描",
"plan.menu.roof.cover.roof.shape.setting": "屋根形状設定",
@@ -49,6 +54,7 @@
"modal.cover.outline.fix": "外壁線確定",
"modal.cover.outline.rollback": "一変戦に戻る",
"modal.cover.outline.finish": "設定完了",
+ "common.setting.finish": "設定完了",
"modal.cover.outline.remove": "外壁の削除",
"modal.cover.outline.select.move": "外壁の選択、移動",
"plan.menu.roof.cover.roof.setting": "屋根形状設定",
@@ -226,6 +232,10 @@
"common.message.password.init.success": "パスワード [{0}] に初期化されました。",
"common.message.no.edit.save": "この文書は変更できません。",
"common.require": "필수",
+ "commons.west": "立つ",
+ "commons.east": "ドン",
+ "commons.south": "M",
+ "commons.north": "北",
"site.name": "Q.CAST III",
"site.sub_name": "태양광 발전 시스템 도면관리 사이트",
"login": "로그인",
@@ -284,5 +294,22 @@
"stuff.gridHeader.dispCompanyName": "견적처",
"stuff.gridHeader.receiveUser": "담당자",
"stuff.gridHeader.specDate": "사양확인",
- "stuff.gridHeader.createDatetime": "등록일"
+ "stuff.gridHeader.createDatetime": "등록일",
+ "slope": "傾斜",
+ "eaves.offset": "軒の",
+ "gable.offset": "ケラバ出幅",
+ "size": "寸",
+ "eaves": "軒",
+ "gable": "ケラバ",
+ "wall": "壁",
+ "hipandgable": "八作屋根",
+ "jerkinhead": "半折",
+ "shed": "片側の流れ",
+ "apply": "適用",
+ "has.sleeve": "袖あり",
+ "has.not.sleeve": "袖なし",
+ "jerkinhead.width": "半折先幅",
+ "jerkinhead.slope": "半折先傾斜",
+ "shed.width": "片流幅",
+ "windage.width": "漂流の出幅"
}
diff --git a/src/locales/ko.json b/src/locales/ko.json
index cc84b9d7..572c1eef 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -31,6 +31,11 @@
"modal.placement.initial.setting.roof.material": "지붕재 선택(단위: mm)",
"modal.placement.initial.setting.roof.material.info": "대응 가능한 지붕재 및 발판은 한정되므로 반드시 사전 매뉴얼을 확인하십시오.",
"modal.placement.initial.setting.rafter": "서까래",
+ "modal.roof.shape.setting": "지붕형상 설정",
+ "modal.roof.shape.setting.ridge": "용마루",
+ "modal.roof.shape.setting.patten.a": "A 패턴",
+ "modal.roof.shape.setting.patten.b": "A 패턴",
+ "modal.roof.shape.setting.side": "변별로 설정",
"plan.menu.roof.cover": "지붕덮개",
"plan.menu.roof.cover.outline.drawing": "외벽선 그리기",
"plan.menu.roof.cover.roof.shape.setting": "지붕형상 설정",
@@ -53,6 +58,8 @@
"modal.cover.outline.fix": "외벽선 확정",
"modal.cover.outline.rollback": "일변전으로 돌아가기",
"modal.cover.outline.finish": "설정완료",
+ "common.setting.finish": "설정완료",
+ "common.setting.rollback": "일변전으로 돌아가기",
"modal.cover.outline.remove": "외벽 제거",
"modal.cover.outline.select.move": "외벽 선택, 이동",
"plan.menu.placement.surface": "배치면",
@@ -227,6 +234,10 @@
"common.message.password.init.success": "비밀번호 [{0}]로 초기화 되었습니다.",
"common.message.no.edit.save": "This document cannot be changed.",
"common.require": "필수",
+ "commons.west": "서",
+ "commons.east": "동",
+ "commons.south": "남",
+ "commons.north": "북",
"site.name": "Q.CAST III",
"site.sub_name": "태양광 발전 시스템 도면관리 사이트",
"login": "로그인",
@@ -285,5 +296,22 @@
"stuff.gridHeader.dispCompanyName": "견적처",
"stuff.gridHeader.receiveUser": "담당자",
"stuff.gridHeader.specDate": "사양확인",
- "stuff.gridHeader.createDatetime": "등록일"
+ "stuff.gridHeader.createDatetime": "등록일",
+ "slope": "경사",
+ "eaves.offset": "처마 출폭",
+ "gable.offset": "케라바 출폭",
+ "size": "치수",
+ "eaves": "처마",
+ "gable": "케라바",
+ "wall": "벽",
+ "hipandgable": "팔작지붕",
+ "jerkinhead": "반절처",
+ "shed": "한쪽흐름",
+ "apply": "적용",
+ "has.sleeve": "소매 있음",
+ "has.not.sleeve": "소매 없음",
+ "jerkinhead.width": "반절처 폭",
+ "jerkinhead.slope": "반절처 경사",
+ "shed.width": "한쪽흐름 폭",
+ "windage.width": "편류의 출폭"
}
diff --git a/src/styles/_modal.scss b/src/styles/_modal.scss
index 88b63229..30e19173 100644
--- a/src/styles/_modal.scss
+++ b/src/styles/_modal.scss
@@ -29,7 +29,6 @@ $alert-color: #101010;
.modal-pop-wrap {
position: fixed;
width: 100%;
- min-width: 300px;
height: -webkit-fit-content;
height: -moz-fit-content;
height: fit-content;
@@ -37,7 +36,26 @@ $alert-color: #101010;
border-radius: 4px;
background-color: #272727;
z-index: 9999999;
- overflow: hidden;
+
+ &.xxxm {
+ width: 230px;
+ }
+
+ &.xxm {
+ width: 270px;
+ }
+
+ &.xm {
+ width: 300px;
+ }
+
+ &.ssm {
+ width: 380px;
+ }
+
+ &.sm {
+ width: 580px;
+ }
&.r {
width: 400px;
@@ -47,16 +65,12 @@ $alert-color: #101010;
width: 440px;
}
- &.sm {
- width: 580px;
+ &.ml {
+ width: 530px;
}
- &.ssm {
- width: 380px;
- }
-
- &.xm {
- width: 300px;
+ &.l-2 {
+ width: 640px;
}
&.l {
@@ -112,7 +126,7 @@ $alert-color: #101010;
align-items: center;
padding: 10px 24px;
background-color: #000;
-
+ // overflow: hidden;
h1.title {
font-size: 13px;
color: $pop-color;
@@ -121,8 +135,8 @@ $alert-color: #101010;
.modal-close {
margin-left: auto;
- color: $pop-color;
- text-indent: -999999999px;
+ color: transparent;
+ font-size: 0;
width: 10px;
height: 10px;
background: url(../../public/static/images/canvas/modal_close.svg) no-repeat center;
@@ -146,6 +160,8 @@ $alert-color: #101010;
flex: 1 1 auto;
padding: 0;
}
+
+ margin-bottom: 14px;
}
}
@@ -253,21 +269,18 @@ $alert-color: #101010;
align-items: center;
gap: 15px;
padding-bottom: 15px;
- border-bottom: 1px solid #3C3C3C;
}
.grid-option-wrap {
- padding: 15px 0;
- border-bottom: 1px solid #3C3C3C;
-
.grid-option-box {
display: flex;
align-items: center;
- background-color: #3D3D3D;
+ background-color: transparent;
+ border: 1px solid #3D3D3D;
border-radius: 2px;
- padding: 10px;
+ padding: 15px 10px;
gap: 20px;
- margin-bottom: 5px;
+ margin-bottom: 10px;
.grid-input-form {
display: flex;
@@ -301,6 +314,29 @@ $alert-color: #101010;
.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;
+ }
+ }
}
}
@@ -309,7 +345,7 @@ $alert-color: #101010;
text-align: right;
button {
- padding: 0 20px;
+ padding: 0 10px;
}
}
@@ -319,7 +355,7 @@ $alert-color: #101010;
color: $pop-color;
font-weight: $pop-normal-weight;
padding-bottom: 15px;
- border-bottom: 1px solid #3C3C3C;
+
}
.grid-direction {
@@ -501,7 +537,6 @@ $alert-color: #101010;
.outline-wrap {
padding: 24px 0;
border-top: 1px solid #424242;
- border-bottom: 1px solid #424242;
.outline-inner {
display: flex;
@@ -513,15 +548,19 @@ $alert-color: #101010;
}
.outline-form {
- width: 50%;
+ // width: 50%;
+ margin-right: 15px;
}
}
+
+ &:last-child {
+ border-bottom: 1px solid #424242;
+ }
}
.outline-form {
display: flex;
align-items: center;
- margin-right: 15px;
span {
width: 60px;
@@ -532,7 +571,9 @@ $alert-color: #101010;
margin-right: 10px;
&.thin {
- font-weight: & $pop-normal-weight;
+ width: auto;
+ font-weight: $pop-normal-weight;
+ margin-right: 0;
}
}
@@ -591,18 +632,18 @@ $alert-color: #101010;
margin-bottom: 14px;
}
+.setting-tit {
+ font-size: 13px;
+ color: $pop-color;
+ font-weight: $pop-bold-weight;
+ margin-bottom: 10px;
+}
+
.properties-setting-wrap {
&.outer {
margin-top: 24px;
}
- .setting-tit {
- font-size: 13px;
- color: $pop-color;
- font-weight: $pop-bold-weight;
- margin-bottom: 10px;
- }
-
.setting-btn-wrap {
display: flex;
align-items: center;
@@ -692,9 +733,212 @@ $alert-color: #101010;
border-bottom: 1px solid #424242;
}
+.padding-form {
+ padding-left: 23px;
+}
+
.discrimination-box {
padding: 16px 12px;
border: 1px solid #3D3D3D;
border-radius: 2px;
- margin-top: 14px;
+}
+
+.modal-bottom-border-bx {
+ margin-top: 24px;
+ padding-bottom: 14px;
+ border-bottom: 1px solid #424242;
+}
+
+// 처마∙케라바 변경
+.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;
+ color: $pop-color;
+ font-weight: $pop-normal-weight;
+ display: table-cell;
+ vertical-align: middle;
+ padding-bottom: 14px;
+ }
+
+ .eaves-keraba-td {
+ padding-left: 15px;
+ }
+
+ .eaves-keraba-ico {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 5px;
+ background-color: #3D3D3D;
+ border: 1px solid #3D3D3D;
+ border-radius: 2px;
+
+ &.act {
+ border: 1px solid #ED0004;
+ }
+ }
+
+ &:last-child {
+ .eaves-keraba-th,
+ .eaves-keraba-td {
+ padding-bottom: 0;
+ }
+ }
+ }
+}
+
+.guide {
+ font-size: $pop-normal-size;
+ font-weight: $pop-normal-weight;
+ color: $pop-color;
+ margin-bottom: 24px;
+
+ &.sm {
+ margin-bottom: 15px;
+ }
+}
+
+// 지붕면 할당
+.allocation-select-wrap {
+ display: flex;
+ align-items: center;
+ 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;
+ height: 30px;
+ padding: 0 10px;
+ margin-left: 5px;
+ font-size: $pop-normal-size;
+ color: $pop-color;
+ font-weight: $pop-normal-weight;
+ border: 1px solid #484848;
+ background-color: #323234;
+
+ i {
+ display: block;
+ width: 12px;
+ height: 12px;
+ margin-right: 5px;
+ background: url(../../public/static/images/canvas/allocation_edit.svg) no-repeat center;
+ background-size: cover;
+ }
+ }
+}
+
+.block-box {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ margin-bottom: 10px;
+
+ .flex-ment {
+ gap: 10px;
+
+ .dec {
+ text-decoration: underline;
+ }
+
+ .delete {
+ display: block;
+ width: 15px;
+ height: 15px;
+ background: url(../../public/static/images/canvas/allocation_delete.svg) no-repeat center;
+ background-size: cover;
+ }
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.icon-btn-wrap {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ gap: 5px;
+
+ button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ height: 30px;
+ font-size: $pop-normal-size;
+ font-weight: $pop-normal-weight;
+ color: $pop-color;
+ border: 1px solid #646464;
+ border-radius: 2px;
+ padding: 0 10px;
+ transition: all .15s ease-in-out;
+
+ i {
+ height: 15px;
+ display: block;
+ margin-left: 10px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+ 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);
+ }
+ }
+ }
+ }
+}
+
+// 경사설정
+.slope-wrap {
+ padding-bottom: 24px;
+ border-bottom: 1px solid #424242;
+}
+
+// 면형상 배치
+.roof-shape-menu {
+ &.plane {
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
+ grid-template-rows: 1fr 1fr 1fr;
+ }
}
\ No newline at end of file
diff --git a/src/styles/_reset.scss b/src/styles/_reset.scss
index dcf0c0d2..6d899458 100644
--- a/src/styles/_reset.scss
+++ b/src/styles/_reset.scss
@@ -1,21 +1,18 @@
* {
- -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;
+ 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,
@@ -25,777 +22,693 @@ 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,
+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;
+ 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,
+article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
- display: block;
+ 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;
+ list-style: none;
}
-
blockquote, q {
- quotes: none;
+ quotes: none;
}
-
blockquote:before, blockquote:after,
q:before, q:after {
- content: '';
- content: none;
+ 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;
+ 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;
+ 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);
+ -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;
+ box-sizing: border-box;
+ padding: 0;
}
-
input, select, button {
- border: 0 none;
- outline: none;
- margin: 0;
+ 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;
-}
-
-.mb5 {
- margin-bottom: 5px !important;
-}
-
-.mb10 {
- margin-bottom: 10px !important;
-}
-
-.mr5 {
- margin-right: 5px !important;
-}
-
-.mr10 {
- margin-right: 10px !important;
-}
-
-.ml5 {
- margin-left: 5px !important;
-}
-
-.ml10 {
- margin-left: 10px !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;}
// 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;
+.btn-frame{
+ display: inline-block;
+ padding: 0 7px;
+ height: 34px;
+ line-height: 34px;
+ border-radius: 2px;
color: #fff;
- font-weight: 500;
- }
-
- &.block {
- display: block;
- width: 100%;
- }
-
- &.ico-flx {
- display: flex;
- align-items: center;
-
- .ico {
- margin-right: 10px;
+ 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 {
- 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 14px;
- 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: #1083E3;
+.btn-origin{
+ display: inline-block;
+ height: 30px;
+ padding: 0 14px;
+ 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: #1083E3;
+ }
}
- }
-
- &.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 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;
+.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;
- transition: all 0.17s ease-in-out;
- visibility: hidden;
-
- .select-item {
- display: flex;
- align-items: center;
- padding: 8px 20px;
- line-height: 1.4;
- transition: all .17s ease-in-out;
-
- button {
- font-size: 12px;
+ border-top-left-radius: 2px;
+ color: #fff;
+ cursor: pointer;
+ p{
+ font-size: 13px;
color: #fff;
- line-height: 1.4;
- }
-
- &:hover {
- background-color: #2C2C2C;
- }
+ height: 100%;
}
- }
-
- &::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;
- }
-
- &.active {
- .select-item-wrap {
- clip-path: inset(0 0 0 0);
- visibility: visible;
+ .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;
+ }
}
-
- &:after {
- transform: translateY(-50%) rotate(-180deg);
+ &::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;
+ }
+ &.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;
- }
+.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;
- }
+.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;
+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;
+ }
}
-
- &.block {
- width: 100%;
+ &.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;
+ }
}
- }
-
- &.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;
- }
-
- .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 .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 .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: #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 {
- &: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 {
- &::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;
+.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;
+ }
}
-
- &: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;
+ 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);
}
- }
-
- 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;
+ &.pop{
+ input[type=checkbox]:checked + label::after{
+ border-color: #fff;
+ }
}
- }
}
// 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