From b26dea0f138ecce78d7672a5d3f038a9d5d3dcce Mon Sep 17 00:00:00 2001 From: "hyunwoo93.cha" Date: Fri, 16 Feb 2024 16:22:00 +0900 Subject: [PATCH] =?UTF-8?q?[categoryPanel]=20=EC=95=84=EC=9D=B4=ED=85=9C?= =?UTF-8?q?=20=EC=B9=B4=EB=93=9C,=20=EA=B2=B0=EA=B3=BC=20=EC=97=86?= =?UTF-8?q?=EC=9D=84=20=EC=8B=9C=20=EB=85=B8=EC=B6=9C=20view=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ItemContents/ItemContents.jsx | 87 ++++++++++++++++++- .../ItemContents/ItemContents.module.less | 15 ++++ .../NoResultsCategoryItems.jsx | 46 ++++++++++ .../NoResultsCategoryItems.module.less | 35 ++++++++ .../NoResultsCategoryShow.module.less | 26 ++++++ .../NoResultsCategoryShows.jsx | 22 +++++ .../ShowContents/ShowContents.jsx | 6 +- .../ShowContents/ShowLists/ShowLists.jsx | 7 +- .../src/views/CategoryPanel/CategoryPanel.jsx | 28 +++--- 9 files changed, 246 insertions(+), 26 deletions(-) create mode 100644 com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.jsx create mode 100644 com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.module.less create mode 100644 com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShow.module.less create mode 100644 com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShows.jsx diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.jsx index d426a7ee..d3c405b2 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.jsx +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.jsx @@ -1,5 +1,88 @@ -import React from "react"; +import React, { useCallback } from "react"; + +import { useSelector } from "react-redux"; + +import { VirtualGridList } from "@enact/sandstone/VirtualList"; +import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; + +import TItemCard from "../../../../components/TItemCard/TItemCard"; +import { scaleH, scaleW } from "../../../../utils/helperMethods"; +import NoResultsCategoryItems from "../NoResultsCategory/NoResultsCategoryItems"; +import css from "./ItemContents.module.less"; + +const LIST_ITEM_CONF = { + ITEM_WIDTH: 324, + ITEM_HEIGHT: 438, + SPACING: 18, +}; + +const Container = SpotlightContainerDecorator( + { enterTo: "last-focused" }, + "div" +); export default function ItemContents() { - return

ITEM

; + const itemListDatas = useSelector( + (state) => state.main.subCategoryData?.categoryItemInfos + ); + + const renderItem = useCallback( + ({ index, ...rest }) => { + const itemInfo = itemListDatas[index]; + const { + catNm, + cntryCd, + imgUrl, + lgCatCd, + offerInfo, + patncLogoPath, + patnrId, + prdtId, + prdtNm, + priceInfo, + rankOrd, + total, + } = itemInfo; + + return ( + + ); + }, + [itemListDatas] + ); + + return ( + <> +
+ + {itemListDatas && itemListDatas.length > 0 && ( + + )} + {itemListDatas && itemListDatas.length === 0 && ( + + )} + +
+ + ); } diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.module.less b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.module.less index e69de29b..8ddc23fa 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.module.less +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ItemContents/ItemContents.module.less @@ -0,0 +1,15 @@ +@import "../../../../style/CommonStyle.module.less"; +@import "../../../../style/utils.module.less"; + +.container { + .size(@w: 100%, @h: auto); + margin-top: 34px; + + .grid { + overflow: unset; + + > div { + overflow: unset !important; + } + } +} diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.jsx new file mode 100644 index 00000000..4f32b227 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.jsx @@ -0,0 +1,46 @@ +import React from "react"; + +import { useSelector } from "react-redux"; + +import NoResultsImage from "../../../../../assets/searchpanel/img-search-nodata.png"; +import SectionTitle from "../../../../components/SectionTitle/SectionTitle"; +import TGrid from "../../../../components/TGrid/TGrid"; +import TItemCard from "../../../../components/TItemCard/TItemCard"; +import { $L } from "../../../../utils/helperMethods"; +import css from "./NoResultsCategoryItems.module.less"; + +export default function NoResultsCategoryItems() { + const bestSellerDatas = useSelector( + (state) => state.product.bestSellerData.bestSeller + ); + + return ( +
+
+
+ No Datas +
+

{$L("THERE ARE NO ITEMS AVAILABLE")}

+
+
+ + + {bestSellerDatas && + bestSellerDatas + .slice(0, 5) + .map((bestSeller) => ( + + ))} + +
+
+ ); +} diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.module.less b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.module.less new file mode 100644 index 00000000..2399e36a --- /dev/null +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryItems.module.less @@ -0,0 +1,35 @@ +@import "../../../../style/CommonStyle.module.less"; +@import "../../../../style/utils.module.less"; + +.container { + margin-top: 100px; + + .info { + text-align: center; + + .imageBox { + .size(@w: 360px, @h: 180px); + margin: 0 auto; + background-size: cover; + + > img { + object-fit: cover; + .size(@w: 100%, @h: 100%); + } + } + + > p { + .font (@fontFamily: @baseFontBold, @fontSize: 36px); + color: #a3a3a3; + margin-top: 6px; + } + } + + .bestSellerWrap { + padding: 60px 60px 78px 0; + + > h2 { + margin: 134px 0 34px; + } + } +} diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShow.module.less b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShow.module.less new file mode 100644 index 00000000..05430424 --- /dev/null +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShow.module.less @@ -0,0 +1,26 @@ +@import "../../../../style/CommonStyle.module.less"; +@import "../../../../style/utils.module.less"; + +.container { + margin-top: 100px; + + .info { + text-align: center; + + .imageBox { + .size(@w: 360px, @h: 180px); + margin: 0 auto; + background-size: cover; + + > img { + object-fit: cover; + .size(@w: 100%, @h: 100%); + } + } + } + + .popularShowWrap { + margin-left: -60px; + padding-bottom: 60px; + } +} diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShows.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShows.jsx new file mode 100644 index 00000000..301f281d --- /dev/null +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/NoResultsCategory/NoResultsCategoryShows.jsx @@ -0,0 +1,22 @@ +import React from "react"; + +import NoResultsImage from "../../../../../assets/searchpanel/img-search-nodata.png"; +import { $L } from "../../../../utils/helperMethods"; +import PopularShow from "../../../HomePanel/PopularShow/PopularShow"; +import css from "./NoResultsCategoryShow.module.less"; + +export default function NoResultsCategoryShows() { + return ( +
+
+
+ No Datas +
+

{$L("THERE ARE NO SHOWS AVAILABLE")}

+
+
+ +
+
+ ); +} diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowContents.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowContents.jsx index 6a0d9e9c..84f96103 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowContents.jsx +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowContents.jsx @@ -4,6 +4,7 @@ import { useSelector } from "react-redux"; import Spottable from "@enact/spotlight/Spottable"; +import NoResultsCategoryShows from "../NoResultsCategory/NoResultsCategoryShows"; import css from "./ShowContents.module.less"; import ShowLists from "./ShowLists/ShowLists"; import ShowProductContents from "./ShowProductContents/ShowProductContents"; @@ -15,8 +16,6 @@ export default function ShowContents() { const { categoryShowInfos, partnerInfos, topShowInfo } = showContentDatas || {}; - console.log("showContentDatas", showContentDatas); - return ( <> {showContentDatas && @@ -36,6 +35,9 @@ export default function ShowContents() { )} + {categoryShowInfos && categoryShowInfos.length === 0 && ( + + )} ); } diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowLists/ShowLists.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowLists/ShowLists.jsx index 790c3d95..76647e4d 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowLists/ShowLists.jsx +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryContents/ShowContents/ShowLists/ShowLists.jsx @@ -4,7 +4,6 @@ import { useSelector } from "react-redux"; import { VirtualGridList } from "@enact/sandstone/VirtualList"; import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; -import Spottable from "@enact/spotlight/Spottable"; import { scaleH, scaleW } from "../../../../../utils/helperMethods"; import css from "./ShowLists.module.less"; @@ -28,7 +27,7 @@ export default function ShowLists() { const renderItem = useCallback( ({ index, ...rest }) => { - const ItemInfo = showListDatas[index]; + const itemInfo = showListDatas[index]; const { catNm, dfltThumbnailImgPath, @@ -41,7 +40,7 @@ export default function ShowLists() { thumbnailUrl, total, vtctpYn, - } = ItemInfo; + } = itemInfo; return ( {showListDatas && showListDatas.length > 0 && ( diff --git a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx index 55746c16..41360c1a 100644 --- a/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx +++ b/com.twin.app.shoptime/src/views/CategoryPanel/CategoryPanel.jsx @@ -3,6 +3,7 @@ import React, { useCallback, useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import Spotlight from "@enact/spotlight"; +import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; import { getSubCategory } from "../../actions/mainActions"; import SectionTitle from "../../components/SectionTitle/SectionTitle"; @@ -16,6 +17,11 @@ import ItemContents from "./CategoryContents/ItemContents/ItemContents"; import ShowContents from "./CategoryContents/ShowContents/ShowContents"; import css from "./CategoryPanel.module.less"; +const TabContainer = SpotlightContainerDecorator( + { enterTo: "last-focused" }, + "div" +); + const getButtonTabList = () => { return [$L("SHOW"), $L("ITEM")]; }; @@ -67,12 +73,6 @@ export default function CategoryPanel() { } }, [categoryDatas, tab]); - useEffect(() => { - const tabType = tab === 0 ? "CAT00101" : "CAT00102"; - - dispatch(getSubCategory({ lgCatCd, tabType })); - }, [tab, dispatch]); - const handleItemClick = useCallback( ({ index }) => { if (index === tab) return; @@ -88,16 +88,10 @@ export default function CategoryPanel() { useEffect(() => { const filterType = dropDownTab === 0 ? "CAT00202" : "CAT00201"; + const tabType = tab === 0 ? "CAT00101" : "CAT00102"; - dispatch(getSubCategory({ lgCatCd, filterType })); - }, [dropDownTab, dispatch]); - - console.log( - "panelInfos", - panelInfos.panelInfo, - "categoryDatas", - categoryDatas - ); + dispatch(getSubCategory({ lgCatCd, tabType, filterType })); + }, [dropDownTab, dispatch, tab]); useEffect(() => { Spotlight.focus(`tab-${tab}`); @@ -124,7 +118,7 @@ export default function CategoryPanel() { /> )} {buttonTabList && buttonTabList.length > 0 && ( -
+ {filterMethods} -
+ )} {tab === 0 && } {tab === 1 && }