diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.jsx
index fadc7465..2423e1c5 100644
--- a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.jsx
+++ b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.jsx
@@ -1,12 +1,11 @@
import React from 'react';
-import classNames from 'classnames';
-
-import Scroller from '@enact/sandstone/Scroller';
+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 CategoryNavItem from '../CategoryNavItem/CategoryNavItem';
import css from './CategoryNav.module.less';
const Container = SpotlightContainerDecorator(
@@ -14,44 +13,42 @@ const Container = SpotlightContainerDecorator(
"nav"
);
-const SpottableComponent = Spottable("li");
-
export default function CategoryNav({
categoryInfos,
currentLgCatCd,
onCategoryNavClick,
...rest
}) {
+ const renderItem = ({ index, ...rest }) => {
+ return (
+
+ );
+ };
+
return (
-
-
- {categoryInfos &&
- categoryInfos.map(({ lgCatNm, lgCatCd }) => {
- return (
- onCategoryNavClick(lgCatCd)}
- >
-
-
-
- {lgCatNm}
-
- );
- })}
-
-
+ {categoryInfos && categoryInfos.length > 0 && (
+
+ )}
);
}
diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.module.less b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.module.less
index 574e134c..f869363a 100644
--- a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.module.less
+++ b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNav/CategoryNav.module.less
@@ -2,208 +2,8 @@
@import "../../../style/utils.module.less";
.container {
- .scroller {
- display: block;
- }
- width: 100%;
+ .size(@w: 100%, @h:236px);
z-index: 10;
background-color: @BG_COLOR_01;
.font(@fontFamily: @baseFontBold, @fontSize: 28px);
-
- ul {
- display: flex;
- gap: 30px;
- margin-top: 50px;
- }
-
- .category {
- /* normal */
- position: relative;
- .flex(@direction: column);
- min-width: 210px;
- color: #1a1a1a;
- text-align: center;
-
- div {
- .flex();
- .size(@w: 94px, @h: 94px);
- margin-bottom: 18px;
- border-radius: 48px;
- background-color: #1a1a1a;
- border: 2px solid #1a1a1a;
-
- span {
- .size(@w: 80px, @h:80px);
- background-position: center;
- background-size: cover;
-
- &.category-icon-1017 {
- // LG Electronics
- background-image: url("../../../../assets/category/ic-category-lgelectronics-nor@3x.png");
- }
-
- // Garden and Outdoors
- &.category-icon-1008 {
- background-image: url("../../../../assets/category/ic-category-garden-nor@3x.png");
- }
-
- // Fashion
- &.category-icon-1000 {
- background-image: url("../../../../assets/category/ic-category-fashion-nor@3x.png");
- }
-
- // Beauty
- &.category-icon-1003 {
- background-image: url("../../../../assets/category/ic-category-beauty-nor@3x.png");
- }
-
- // Jewelry
- &.category-icon-1004 {
- background-image: url("../../../../assets/category/ic-category-jewelry-nor@3x.png");
- }
-
- // Home
- &.category-icon-1006 {
- background-image: url("../../../../assets/category/ic-category-home-nor@3x.png");
- }
-
- // Kitchen & Food
- &.category-icon-1007 {
- background-image: url("../../../../assets/category/ic-category-kitchen-nor@3x.png");
- }
-
- // Accessories
- &.category-icon-1014 {
- background-image: url("../../../../assets/category/ic-category-accessories-nor@3x.png");
- }
-
- // Heaclth & Fitness
- &.category-icon-1009 {
- background-image: url("../../../../assets/category/ic-category-health-nor@3x.png");
- }
-
- // Crafts & Sewing
- &.category-icon-1011 {
- background-image: url("../../../../assets/category/ic-category-cw-nor@3x.png");
- }
-
- // Electronics
- &.category-icon-1010 {
- background-image: url("../../../../assets/category/ic-category-electronics-nor@3x.png");
- }
-
- // Clearance
- &.category-icon-1013 {
- background-image: url("../../../../assets/category/ic-category-clearance-nor@3x.png");
- }
- }
- }
-
- strong {
- height: 60px;
- margin-bottom: 12px;
- }
-
- &::after {
- content: "";
- position: absolute;
- bottom: 0;
- display: block;
- .size(@w: 100%, @h:6px);
- background-color: transparent;
- }
-
- /* focused */
- &:focus {
- // color: #c70850;
-
- div {
- background-color: #fff;
- border: solid 2px #c70850;
- box-shadow: 0 0 25px 0 rgba(2, 3, 3, 0.8);
-
- span {
- // LG Electronics
- &.category-icon-1017 {
- background-image: url("../../../../assets/category/ic-category-lgelectronics-foc@3x.png");
- }
-
- // Garden and Outdoors
- &.category-icon-1008 {
- background-image: url("../../../../assets/category/ic-category-garden-foc@3x.png");
- }
-
- // Fashion
- &.category-icon-1000 {
- background-image: url("../../../../assets/category/ic-category-fashion-foc@3x.png");
- }
-
- // Beauty
- &.category-icon-1003 {
- background-image: url("../../../../assets/category/ic-category-beauty-foc@3x.png");
- }
-
- // Jewelry
- &.category-icon-1004 {
- background-image: url("../../../../assets/category/ic-category-jewelry-foc@3x.png");
- }
-
- // Home
- &.category-icon-1006 {
- background-image: url("../../../../assets/category/ic-category-home-foc@3x.png");
- }
-
- // Kitchen & Food
- &.category-icon-1007 {
- background-image: url("../../../../assets/category/ic-category-kitchen-foc@3x.png");
- }
-
- // Accessories
- &.category-icon-1014 {
- background-image: url("../../../../assets/category/ic-category-accessories-foc@3x.png");
- }
-
- // Heaclth & Fitness
- &.category-icon-1009 {
- background-image: url("../../../../assets/category/ic-category-health-foc@3x.png");
- }
-
- // Crafts & Sewing
- &.category-icon-1011 {
- background-image: url("../../../../assets/category/ic-category-cw-foc@3x.png");
- }
-
- // Electronics
- &.category-icon-1010 {
- background-image: url("../../../../assets/category/ic-category-electronics-foc@3x.png");
- }
-
- // Clearance
- &.category-icon-1013 {
- background-image: url("../../../../assets/category/ic-category-clearance-foc@3x.png");
- }
- }
- }
-
- strong {
- color: #c70850;
- }
-
- &::after {
- background-color: #c70850;
- }
- }
- }
-
- /* selected */
- .selected {
- div {
- background-color: #c70850;
- border: solid 2px #c70850;
- }
-
- strong {
- color: #c70850;
- }
- }
}
diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.jsx b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.jsx
new file mode 100644
index 00000000..bcc9bde4
--- /dev/null
+++ b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.jsx
@@ -0,0 +1,36 @@
+import React from 'react';
+
+import classNames from 'classnames';
+
+import Spottable from '@enact/spotlight/Spottable';
+
+import css from './CategoryNavItem.module.less';
+
+const SpottableComponent = Spottable("div");
+
+export default function CategoryNavItem({
+ categoryInfos,
+ currentLgCatCd,
+ onCategoryNavClick,
+ index,
+ ...rest
+}) {
+ return (
+ onCategoryNavClick(categoryInfos[index].lgCatCd)}
+ {...rest}
+ >
+
+
+
+ {categoryInfos[index].lgCatNm}
+
+ );
+}
diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.module.less b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.module.less
new file mode 100644
index 00000000..e45dc2a2
--- /dev/null
+++ b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/CategoryNavItem.module.less
@@ -0,0 +1,191 @@
+@import "../../../style/CommonStyle.module.less";
+@import "../../../style/utils.module.less";
+
+.category {
+ /* normal */
+ position: relative;
+ .flex(@direction: column);
+ margin-top: 50px;
+ color: @COLOR_GRAY08;
+ text-align: center;
+
+ div {
+ .flex();
+ .size(@w: 94px, @h: 94px);
+ margin-bottom: 18px;
+ border-radius: 48px;
+ background-color: @COLOR_GRAY08;
+ border: 2px solid @COLOR_GRAY08;
+
+ span {
+ .size(@w: 80px, @h:80px);
+ background-position: center;
+ background-size: cover;
+
+ &.category-icon-1017 {
+ // LG Electronics
+ background-image: url("../../../../assets/category/ic-category-lgelectronics-nor@3x.png");
+ }
+
+ // Garden and Outdoors
+ &.category-icon-1008 {
+ background-image: url("../../../../assets/category/ic-category-garden-nor@3x.png");
+ }
+
+ // Fashion
+ &.category-icon-1000 {
+ background-image: url("../../../../assets/category/ic-category-fashion-nor@3x.png");
+ }
+
+ // Beauty
+ &.category-icon-1003 {
+ background-image: url("../../../../assets/category/ic-category-beauty-nor@3x.png");
+ }
+
+ // Jewelry
+ &.category-icon-1004 {
+ background-image: url("../../../../assets/category/ic-category-jewelry-nor@3x.png");
+ }
+
+ // Home
+ &.category-icon-1006 {
+ background-image: url("../../../../assets/category/ic-category-home-nor@3x.png");
+ }
+
+ // Kitchen & Food
+ &.category-icon-1007 {
+ background-image: url("../../../../assets/category/ic-category-kitchen-nor@3x.png");
+ }
+
+ // Accessories
+ &.category-icon-1014 {
+ background-image: url("../../../../assets/category/ic-category-accessories-nor@3x.png");
+ }
+
+ // Heaclth & Fitness
+ &.category-icon-1009 {
+ background-image: url("../../../../assets/category/ic-category-health-nor@3x.png");
+ }
+
+ // Crafts & Sewing
+ &.category-icon-1011 {
+ background-image: url("../../../../assets/category/ic-category-cw-nor@3x.png");
+ }
+
+ // Electronics
+ &.category-icon-1010 {
+ background-image: url("../../../../assets/category/ic-category-electronics-nor@3x.png");
+ }
+
+ // Clearance
+ &.category-icon-1013 {
+ background-image: url("../../../../assets/category/ic-category-clearance-nor@3x.png");
+ }
+ }
+ }
+
+ strong {
+ height: 60px;
+ margin-bottom: 12px;
+ }
+
+ &::after {
+ content: "";
+ position: absolute;
+ bottom: 0;
+ display: block;
+ .size(@w: 100%, @h:6px);
+ background-color: transparent;
+ }
+
+ /* focused */
+ &:focus {
+ div {
+ background-color: @COLOR_WHITE;
+ border: solid 2px @PRIMARY_COLOR_RED;
+ box-shadow: 0 0 25px 0 rgba(2, 3, 3, 0.8);
+
+ span {
+ // LG Electronics
+ &.category-icon-1017 {
+ background-image: url("../../../../assets/category/ic-category-lgelectronics-foc@3x.png");
+ }
+
+ // Garden and Outdoors
+ &.category-icon-1008 {
+ background-image: url("../../../../assets/category/ic-category-garden-foc@3x.png");
+ }
+
+ // Fashion
+ &.category-icon-1000 {
+ background-image: url("../../../../assets/category/ic-category-fashion-foc@3x.png");
+ }
+
+ // Beauty
+ &.category-icon-1003 {
+ background-image: url("../../../../assets/category/ic-category-beauty-foc@3x.png");
+ }
+
+ // Jewelry
+ &.category-icon-1004 {
+ background-image: url("../../../../assets/category/ic-category-jewelry-foc@3x.png");
+ }
+
+ // Home
+ &.category-icon-1006 {
+ background-image: url("../../../../assets/category/ic-category-home-foc@3x.png");
+ }
+
+ // Kitchen & Food
+ &.category-icon-1007 {
+ background-image: url("../../../../assets/category/ic-category-kitchen-foc@3x.png");
+ }
+
+ // Accessories
+ &.category-icon-1014 {
+ background-image: url("../../../../assets/category/ic-category-accessories-foc@3x.png");
+ }
+
+ // Heaclth & Fitness
+ &.category-icon-1009 {
+ background-image: url("../../../../assets/category/ic-category-health-foc@3x.png");
+ }
+
+ // Crafts & Sewing
+ &.category-icon-1011 {
+ background-image: url("../../../../assets/category/ic-category-cw-foc@3x.png");
+ }
+
+ // Electronics
+ &.category-icon-1010 {
+ background-image: url("../../../../assets/category/ic-category-electronics-foc@3x.png");
+ }
+
+ // Clearance
+ &.category-icon-1013 {
+ background-image: url("../../../../assets/category/ic-category-clearance-foc@3x.png");
+ }
+ }
+ }
+
+ strong {
+ color: @PRIMARY_COLOR_RED;
+ }
+
+ &::after {
+ background-color: @PRIMARY_COLOR_RED;
+ }
+ }
+}
+
+/* selected */
+.selected {
+ div {
+ background-color: @PRIMARY_COLOR_RED;
+ border: solid 2px @PRIMARY_COLOR_RED;
+ }
+
+ strong {
+ color: @PRIMARY_COLOR_RED;
+ }
+}
diff --git a/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/package.json b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/package.json
new file mode 100644
index 00000000..d0365149
--- /dev/null
+++ b/com.twin.app.shoptime/src/views/OnSalePanel/CategoryNavItem/package.json
@@ -0,0 +1,6 @@
+{
+ "main": "CategoryNavItem.jsx",
+ "styles": [
+ "CategoryNavItem.module.less"
+ ]
+}