diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx index 1fd7c1a9..934d03ab 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.jsx @@ -17,7 +17,8 @@ export default function CheckOutPanel() { const { userInfo } = useSelector( (state) => state.common.appStatus.loginUserData ); - + const checkoutData = useSelector((state) => state.checkout?.checkoutData); + console.log("###shippingAddressList", checkoutData); useEffect(() => { dispatch( getMyInfoCheckoutInfo({ @@ -38,21 +39,24 @@ export default function CheckOutPanel() { const onBackClick = useCallback(() => { dispatch(popPanel()); }, [dispatch]); - + //{ name: panel_names.ON_SALE_PANEL } return ( - - - -
- - -
- -
+ <> + + + + +
+ + +
+ +
+ ); } diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.module.less index f4c5201c..16662067 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.module.less +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/CheckOutPanel.module.less @@ -1,14 +1,22 @@ @import "../../style/CommonStyle.module.less"; @import "../../style/utils.module.less"; - -.theader { - padding-left: 60px; -} .tbody { .size(@w: 1920px, @h: 100%); - + .theader { + position: sticky; + left: 0; + top: 0; + padding-left: 60px; + z-index: 10; + } .Wrap { - height: 2050px; + // margin-top: 90px; + // height: 2050px; display: flex; } } + +.fixedSideBar { + position: fixed; + background-color: rgba(0, 0, 0, 0.3); +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.jsx new file mode 100644 index 00000000..5cf18000 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.jsx @@ -0,0 +1,77 @@ +import React, { useCallback } from "react"; + +import TVirtualGridList from "../../../components/TVirtualGridList/TVirtualGridList"; +import useScrollTo from "../../../hooks/useScrollTo"; +import BillingAddressItem from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/BillingAddressTab/BillingAddressItem"; +import MyInfoNoResults from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/MyInfoNoResults/MyInfoNoResults"; +import css from "./BillingAddressCard.module.less"; +import CheckOutContainer from "./CheckOutContainer"; + +export const ITEM_SIZE = { + itemWidth: 444, + itemHeight: 348, + spacing: 18, +}; + +export default function BillingAddressCard({ list }) { + const { getScrollTo, scrollLeft } = useScrollTo(); + + const renderItem = useCallback( + ({ index, ...rest }) => { + const { + bilAddrSno, + bilCityNm, + bilCtpt, + bilDtlAddr, + bilEmalAddr, + bilOdrFnm, + bilOdrLnm, + bilStatNm, + bilStatPvc, + bilZpcd, + chgDt, + cntryCd, + cntryNm, + mbrNo, + regDt, + useFlag, + } = list[index]; + + return ( + + ); + }, + [list] + ); + + return ( + +
+ {list && list.length > 0 ? ( + + ) : ( + + )} +
+
+ ); +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.module.less new file mode 100644 index 00000000..a1f3e720 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/BillingAddressCard.module.less @@ -0,0 +1,6 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; + +.billingBox { + min-height: 383px; +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.jsx new file mode 100644 index 00000000..f8f4da52 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.jsx @@ -0,0 +1,18 @@ +import React from "react"; + +import classNames from "classnames"; + +import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; + +import css from "./CheckOutContainer.module.less"; + +const Container = SpotlightContainerDecorator( + { enterTo: "last-focused" }, + "div" +); + +export default function CheckOutContainer({ children }) { + return ( + {children} + ); +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.module.less new file mode 100644 index 00000000..d8ee4fb0 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/CheckOutContainer.module.less @@ -0,0 +1,10 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; + +.chekcoutBox { + background-color: @BG_COLOR_02; + border: 1px solid @COLOR_GRAY02; + border-top: none; + padding: 18px 0px 18px 60px; + background-color: #f2f2f2; +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.jsx new file mode 100644 index 00000000..2764314c --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.jsx @@ -0,0 +1,22 @@ +import React from "react"; + +import MyInfoNoResults from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/MyInfoNoResults/MyInfoNoResults"; +import PaymentItem from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/PaymentTab/PaymentItem"; +import CheckOutContainer from "./CheckOutContainer"; +import css from "./PaymentCard.module.less"; + +export default function PaymentCard({ list }) { + return ( + + {list ? ( + + ) : ( + + )} + + ); +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.module.less new file mode 100644 index 00000000..e65179b2 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PaymentCard.module.less @@ -0,0 +1,6 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; + +.paymentBox { + min-height: 305px; +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.jsx index 0b880c2c..6fefe997 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.jsx +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.jsx @@ -2,42 +2,61 @@ import React, { memo } from "react"; import Spottable from "@enact/spotlight/Spottable"; +import TScroller from "../../../components/TScroller/TScroller"; +import CheckOutContainer from "./CheckOutContainer"; import css from "./ShippingAddressCard.module.less"; const ItemContainer = Spottable("div"); -export default memo(function ShippingAddressCard({ - dlvrOdrFnm, - dlvrOdrLnm, - dlvrZpcd, - dlvrStatNm, - dlvrCityNm, - dlvrDtlAddr, - dlvrCtpt, - dlvrEmalAddr, -}) { +export default memo(function ShippingAddressCard({ list }) { return ( - -

- {dlvrOdrFnm} {dlvrOdrLnm} -

-
-

- {dlvrZpcd} {dlvrStatNm},
- {dlvrCityNm}
- {dlvrDtlAddr} -

-
-
-

- - {dlvrCtpt?.replace(/^(\d{2,3})(\d{3,4})(\d{4})$/, `$1-$2-$3`)} -

-

- - {dlvrEmalAddr} -

-
-
+ + + {list && + list.map( + ( + { + dlvrOdrFnm, + dlvrOdrLnm, + dlvrZpcd, + dlvrStatNm, + dlvrCityNm, + dlvrDtlAddr, + dlvrCtpt, + dlvrEmalAddr, + }, + index + ) => { + return ( + +

+ {dlvrOdrFnm} {dlvrOdrLnm} +

+
+

+ {dlvrZpcd} {dlvrStatNm},
+ {dlvrCityNm}
+ {dlvrDtlAddr} +

+
+
+

+ + {dlvrCtpt?.replace( + /^(\d{2,3})(\d{3,4})(\d{4})$/, + `$1-$2-$3` + )} +

+

+ + {dlvrEmalAddr} +

+
+
+ ); + } + )} +
+
); }); diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.module.less index f43f12e0..1aa29207 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.module.less +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/ShippingAddressCard.module.less @@ -1,6 +1,10 @@ @import "../../../style/CommonStyle.module.less"; @import "../../../style/utils.module.less"; +.shippingBox { + min-height: 383px; +} + .itemContainer { .size(@w: 444px, @h: 348px); background-color: @BG_COLOR_05; diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.jsx new file mode 100644 index 00000000..fa3d4e7e --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.jsx @@ -0,0 +1,53 @@ +import React, { useState } from "react"; + +import classNames from "classnames"; + +import css from "./FixedSideBar.module.less"; + +export default function FixedSideBar({ list, open }) { + console.log("###test", open); + // const [] + return ( + <> +
+
+
+ + ORDER ITEM +
+
+
+ {list && + list.length > 0 && + list.map((item, index) => { + return ( +
+
+ + ID: {item.prdtId} +
+
+
+
+ +
+
+
{item.prdtNm}
+
+ {item.prdtOpt[0].prodOptCval} +
+
QTY : {item.prodQty}
+
+ $ {item.price3 !== 0 ? item.price3 : item.price2} + | S&H{item.shippingCharge} +
+
+
+
+ ); + })} +
+
+ + ); +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.module.less new file mode 100644 index 00000000..839f25cb --- /dev/null +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/container/FixedSideBar.module.less @@ -0,0 +1,132 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; +.fixedBg { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.3); + z-index: 11; + &.displayOn { + display: block; + } + &.displayOff { + display: none; + } +} +.fixedSideBar { + &.displayOn { + display: block; + } + &.displayOff { + display: none; + } + position: fixed; + right: 0; + top: 0; + width: 720px; + height: 100%; + background: #2c343f; + z-index: 12; + .sideMainTitle { + margin: 60px 13px 30px 19px; + font-size: 42px; + color: #f8f8f8; + height: 48px; + line-height: 48px; + display: flex; + flex-wrap: wrap; + > span { + background-image: url("../../../../assets/images/btn/btn-wh-arrow-left-nor.svg"); + width: 48px; + height: 48px; + background-size: contain; + &:focus { + background-image: url("../../../../assets/images/btn/btn-wh-arrow-left-foc.svg"); + } + } + } + .sideLine { + border-bottom: 1px solid #d9d9d9; + } + .sideItemList { + padding: 30px; + .sideItem { + width: 660px; + height: 333px; + background: #fff; + border-radius: 12px; + margin-bottom: 12px; + .sideTitle { + padding: 20px 30px; + color: #767676; + font-size: 30px; + font-weight: bold; + .sideLogoImg { + width: 42px; + height: 42px; + margin-right: 12px; + } + } + .productInfo { + padding: 20px 30px 30px; + display: flex; + flex-wrap: wrap; + .productImg { + border: 1px solid #f0f0f0; + width: 200px; + height: 200px; + > img { + width: 198px; + height: 198px; + } + } + .pdInfo { + width: 375px; + margin-left: 20px; + .pdName { + width: 375px; + height: 60px; + font-size: 24px; + font-weight: bold; + color: #333; + line-height: 32px; + .elip(@clamp:2); + } + .pdOpt { + width: 375px; + height: 30px; + margin-top: 12px; + font-size: 24px; + font-weight: normal; + color: #808080; + .elip(@clamp:1); + } + .pdEa { + width: 375px; + height: 30px; + color: #808080; + font-weight: normal; + font-size: 24px; + .elip(@clamp:1); + } + .pdPriceInfo { + margin-top: 10px; + display: flex; + width: 380px; + height: 36px; + line-height: 36px; + color: #c70850; + font-size: 30px; + .elip(@clamp:1); + > span { + font-size: 24px; + color: #808080; + } + } + } + } + } + } +} diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.jsx index cc1fc826..16a5d10f 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.jsx +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.jsx @@ -1,37 +1,61 @@ -import React from "react"; +import React, { useCallback, useState } from "react"; import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; +import Spottable from "@enact/spotlight/Spottable"; -import BillingAddressTab from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/BillingAddressTab/BillingAddressTab"; -import PaymentTab from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/PaymentTab/PaymentTab"; -import ShippingAddressTab from "../../MyPagePanel/MyPageSub/MyInfo/MyInfoTabContents/ShippingAddressTab/ShippingAddressTab"; +import TButton from "../../../components/TButton/TButton"; +import { $L } from "../../../utils/helperMethods"; +import BillingAddressCard from "../components/BillingAddressCard"; +import PaymentCard from "../components/PaymentCard"; import ShippingAddressCard from "../components/ShippingAddressCard"; import Subject from "../components/Subject"; +import FixedSideBar from "./FixedSideBar.jsx"; import css from "./InformationContainer.module.less"; const Container = SpotlightContainerDecorator( { enterTo: "last-focused" }, "div" ); -export default function InformationContainer() { + +const BtnSpot = Spottable("div"); +export default function InformationContainer({ checkoutData }) { + console.log("###infomantion", checkoutData); + const [open, setOpen] = useState(false); + const handleClick = useCallback(() => { + setOpen(true); + }, [onClick]); return ( - - -
- - -
-
- - -
-
- - -
-
- -
-
+ <> + + + +

{checkoutData.productList?.length} ITEMS

+
+
+
+ + ADD/EDIT + +
+
+ + ADD/EDIT + +
+
+ + ADD/EDIT + +
+
+ + +

$12.60

+
+
+
+
+ + ); } diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.module.less index 9e2f583e..7c9d707a 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.module.less +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/container/InformationContainer.module.less @@ -5,6 +5,72 @@ background-color: #f8f8f8f8; width: 1320px; height: 100%; + position: relative; + .markBtn { + position: absolute; + top: 84px; + right: 60px; + height: 48px; + display: flex; + > p { + font-size: 30px; + font-weight: bold; + color: #c70850; + line-height: 48px; + } + .markImg { + width: 48px; + height: 48px; + background-image: url("../../../../assets/images/btn/btn-bk-arrow-right-nor.svg"); + background-size: contain; + } + &:focus { + .markImg { + background-image: url("../../../../assets/images/btn/btn-bk-arrow-right-foc.svg"); + background-size: contain; + } + } + } + .listBox { + position: relative; + .markBtn { + position: absolute; + top: 24px; + right: 60px; + height: 48px; + display: flex; + > p { + font-size: 30px; + font-weight: bold; + color: #c70850; + line-height: 48px; + } + .markImg { + width: 48px; + height: 48px; + background-image: url("../../../../assets/images/btn/btn-bk-arrow-right-nor.svg"); + background-size: contain; + } + &:focus { + .markImg { + background-image: url("../../../../assets/images/btn/btn-bk-arrow-right-foc.svg"); + background-size: contain; + } + } + } + } + .editBtn { + position: absolute; + min-width: unset; + max-width: unset; + width: 150px; + height: 60px; + font-size: 24px; + line-height: 60px; + text-align: center; + top: 18px; + right: 60px; + } .address { height: 383px; background-color: #f2f2f2; diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/container/SummaryContainer.module.less b/com.twin.app.shoptime/src/views/CheckOutPanel/container/SummaryContainer.module.less index ad5144fb..61c920c7 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/container/SummaryContainer.module.less +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/container/SummaryContainer.module.less @@ -2,7 +2,7 @@ @import "../../../style/utils.module.less"; .container { - .size(@w: 600px , @h: 100%); + .size(@w: 600px , @h: inherit); background-color: #2c343f; }