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 (
-
-
-
-
-
-
- );
-}
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"
- ]
-}