[OnSalePanel] props 및 구조 수정

Detail Notes :

1. OnSaleProductList, empty div OnSaleProductItem으로 이동
2. OnSaleProductItem, 불필요 props 삭제
3. OnSaleProductList, OnSaleProductItem, 최적화 및 css 수정
This commit is contained in:
younghoon100.park
2024-02-05 20:00:03 +09:00
parent 513ac3e36c
commit f07b1c62b3
5 changed files with 48 additions and 38 deletions

View File

@@ -69,11 +69,10 @@ export default function OnSalePanel() {
saleInfos.map(({ saleNm, saleProductInfos }) => ( saleInfos.map(({ saleNm, saleProductInfos }) => (
<OnSaleProductList <OnSaleProductList
key={saleNm} key={saleNm}
saleNm={saleNm} saleName={saleNm}
saleProductInfos={saleProductInfos} saleProductInfos={saleProductInfos}
/> />
))} ))}
<TopButton targetId={SpotlightIds.TITEM_CARD + targetId} /> <TopButton targetId={SpotlightIds.TITEM_CARD + targetId} />
</TBody> </TBody>
</TPanel> </TPanel>

View File

@@ -1,24 +1,31 @@
import React from "react"; import React, { memo } from "react";
import TItemCard from "../../../components/TItemCard/TItemCard"; import TItemCard from "../../../components/TItemCard/TItemCard";
import css from "./OnSaleProductItem.module.less"; import css from "./OnSaleProductItem.module.less";
export default function OnSaleProductItem({ export default memo(function OnSaleProductItem({
imgUrl, index,
prdtId, saleProductInfos,
prdtNm,
priceInfo,
...rest ...rest
}) { }) {
const {
imgUrl,
prdtId: productId,
prdtNm: productName,
priceInfo,
} = saleProductInfos[index];
return ( return (
<TItemCard <div className={css.container}>
imageAlt={prdtNm} <div />
imageSource={imgUrl} <TItemCard
onCardClick={() => {}} imageAlt={productName}
priceInfo={priceInfo} imageSource={imgUrl}
productId={prdtId} priceInfo={priceInfo}
productName={prdtNm} productId={productId}
{...rest} productName={productName}
/> {...rest}
/>
</div>
); );
} });

View File

@@ -0,0 +1,6 @@
.container {
// empty block
> div:nth-child(1) {
height: 132px;
}
}

View File

@@ -1,12 +1,10 @@
import React from "react"; import React, { useCallback } from "react";
import { VirtualGridList } from "@enact/sandstone/VirtualList"; import { VirtualGridList } from "@enact/sandstone/VirtualList";
import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator";
import Spottable from "@enact/spotlight/Spottable";
import ri from "@enact/ui/resolution"; import ri from "@enact/ui/resolution";
import SectionTitle from "../../../components/SectionTitle/SectionTitle"; import SectionTitle from "../../../components/SectionTitle/SectionTitle";
import TItemCard from "../../../components/TItemCard/TItemCard";
import OnSaleProductItem from "../OnSaleProductItem/OnSaleProductItem"; import OnSaleProductItem from "../OnSaleProductItem/OnSaleProductItem";
import css from "./OnSaleProductList.module.less"; import css from "./OnSaleProductList.module.less";
@@ -22,24 +20,27 @@ const Container = SpotlightContainerDecorator(
); );
export default function OnSaleProductList({ export default function OnSaleProductList({
saleNm, saleName,
saleProductInfos, saleProductInfos,
...rest ...rest
}) { }) {
const renderItem = ({ index, ...rest }) => { const renderItem = useCallback(
const saleProductInfo = saleProductInfos[index]; ({ index, ...rest }) => {
return (
return ( <OnSaleProductItem
<> index={index}
{<div className={css.empty} />} saleProductInfos={saleProductInfos}
<OnSaleProductItem saleName={saleNm} {...saleProductInfo} {...rest} /> {...rest}
</> />
); );
}; },
[saleProductInfos]
);
return ( return (
<Container className={css.container} {...rest}> <Container className={css.container} {...rest}>
{<SectionTitle title={saleNm} />} {saleName && <SectionTitle title={saleName} />}
{saleProductInfos && ( {saleProductInfos && (
<VirtualGridList <VirtualGridList
className={css.virtualGridList} className={css.virtualGridList}

View File

@@ -4,18 +4,15 @@
.container { .container {
position: relative; position: relative;
.size(@w: 100%, @h: 570px); .size(@w: 100%, @h: 570px);
padding-left: 60px;
// sectionTitle
h2 { h2 {
.position(@position: absolute, @top: 58px, @left: 60px); .position(@position: absolute, @top: 58px, @left: 60px);
} }
.virtualGridList { .virtualGridList {
overflow: unset; overflow: unset;
padding-left: 60px;
.empty {
height: 132px;
}
> div { > div {
overflow: unset !important; overflow: unset !important;