diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSalePanel.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/OnSalePanel.jsx index 0a419650..4f35ddd8 100644 --- a/com.twin.app.shoptime/src/views/OnSalePanel/OnSalePanel.jsx +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSalePanel.jsx @@ -4,13 +4,12 @@ import { useDispatch, useSelector } from "react-redux"; import { getOnSaleInfo } from "../../actions/onSaleActions"; import TBody from "../../components/TBody/TBody"; -import TItemCard from "../../components/TItemCard/TItemCard"; import TopButton from "../../components/TopButton/TopButton"; import TPanel from "../../components/TPanel/TPanel"; import { SpotlightIds } from "../../utils/SpotlightIds"; import CategoryNav from "../OnSalePanel/CategoryNav/CategoryNav"; -import OnSaleProductsGrid from "../OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid"; import css from "./OnSalePanel.module.less"; +import OnSaleProductList from "./OnSaleProductList/OnSaleProductList"; export default function OnSalePanel() { const dispatch = useDispatch(); @@ -46,6 +45,8 @@ export default function OnSalePanel() { dispatch( getOnSaleInfo({ categoryIncFlag: "Y", lgCatCd: currentCategoryCode }) ); + } else { + dispatch(getOnSaleInfo({ categoryIncFlag: "Y", lgCatCd: "" })); } }, [currentCategoryCode, dispatch]); @@ -65,26 +66,13 @@ export default function OnSalePanel() { /> {saleInfos && - saleInfos.map(({ saleNm, saleProductInfos }) => { - return ( - - {saleProductInfos.map( - ({ imgUrl, prdtId, prdtNm, priceInfo }) => { - return ( - - ); - } - )} - - ); - })} + saleInfos.map(({ saleNm, saleProductInfos }) => ( + + ))} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/OnSaleProductItem.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/OnSaleProductItem.jsx new file mode 100644 index 00000000..366b97aa --- /dev/null +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/OnSaleProductItem.jsx @@ -0,0 +1,24 @@ +import React from "react"; + +import TItemCard from "../../../components/TItemCard/TItemCard"; +import css from "./OnSaleProductItem.module.less"; + +export default function OnSaleProductItem({ + imgUrl, + prdtId, + prdtNm, + priceInfo, + ...rest +}) { + return ( + {}} + priceInfo={priceInfo} + productId={prdtId} + productName={prdtNm} + {...rest} + /> + ); +} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/OnSaleProductItem.module.less b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/OnSaleProductItem.module.less new file mode 100644 index 00000000..e69de29b diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/package.json b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/package.json new file mode 100644 index 00000000..e5c9a24c --- /dev/null +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductItem/package.json @@ -0,0 +1,6 @@ +{ + "main": "OnSaleProductItem.jsx", + "styles": [ + "OnSaleProductItem.module.less" + ] +} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.jsx new file mode 100644 index 00000000..c00f0346 --- /dev/null +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.jsx @@ -0,0 +1,61 @@ +import React from "react"; + +import { VirtualGridList } from "@enact/sandstone/VirtualList"; +import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; +import Spottable from "@enact/spotlight/Spottable"; +import ri from "@enact/ui/resolution"; + +import SectionTitle from "../../../components/SectionTitle/SectionTitle"; +import TItemCard from "../../../components/TItemCard/TItemCard"; +import OnSaleProductItem from "../OnSaleProductItem/OnSaleProductItem"; +import css from "./OnSaleProductList.module.less"; + +const LIST_ITEM_CONF = { + ITEM_WIDTH: 324 * 2, + ITEM_HEIGHT: 570 * 2, + SAPCING: 18 * 2, +}; + +const Container = SpotlightContainerDecorator( + { leaveFor: { left: "", right: "" }, enterTo: "last-focused" }, + "div" +); + +export default function OnSaleProductList({ + saleNm, + saleProductInfos, + ...rest +}) { + const renderItem = ({ index, ...rest }) => { + const saleProductInfo = saleProductInfos[index]; + + return ( + <> + {
} + + + ); + }; + + return ( + + {} + {saleProductInfos && ( + + )} + + ); +} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.module.less b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.module.less new file mode 100644 index 00000000..50be34a3 --- /dev/null +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/OnSaleProductList.module.less @@ -0,0 +1,24 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; + +.container { + position: relative; + .size(@w: 100%, @h: 570px); + + h2 { + .position(@position: absolute, @top: 58px, @left: 60px); + } + + .virtualGridList { + overflow: unset; + padding-left: 60px; + + .empty { + height: 132px; + } + + > div { + overflow: unset !important; + } + } +} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/package.json b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/package.json new file mode 100644 index 00000000..c76bd2f3 --- /dev/null +++ b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductList/package.json @@ -0,0 +1,6 @@ +{ + "main": "OnSaleProductList.jsx", + "styles": [ + "OnSaleProductList.module.less" + ] +} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.jsx deleted file mode 100644 index 547b67d1..00000000 --- a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; - -import Scroller from "@enact/sandstone/Scroller"; -import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; - -import SectionTitle from "../../../components/SectionTitle/SectionTitle"; -import css from "./OnSaleProductsGrid.module.less"; - -const Container = SpotlightContainerDecorator( - { leaveFor: { left: "", right: "" }, enterTo: "last-focused" }, - "div" -); - -export default function OnSaleProductsGrid({ sectionTitle, children }) { - return ( - - - -
    {children}
-
-
- ); -} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.module.less b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.module.less deleted file mode 100644 index f309de02..00000000 --- a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/OnSaleProductsGrid.module.less +++ /dev/null @@ -1,24 +0,0 @@ -@import "../../../style/CommonStyle.module.less"; -@import "../../../style/utils.module.less"; - -.container { - position: relative; - - .scroller { - display: block; - padding-left: 60px; - - h2 { - .position(@position: sticky, @left: 0); - margin: 58px 0 24px; - } - - ul { - .flex(@justifyCenter: flex-start); - - > li { - margin-right: 18px; - } - } - } -} diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/package.json b/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/package.json deleted file mode 100644 index 1aba1243..00000000 --- a/com.twin.app.shoptime/src/views/OnSalePanel/OnSaleProductsGrid/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "main": "OnSaleProductsGrid.jsx", - "styles": [ - "OnSaleProductsGrid.module.less" - ] -}