From a5fbb21d43b7f0a71c42528f61be560fa336d8d0 Mon Sep 17 00:00:00 2001 From: optrader Date: Wed, 26 Nov 2025 20:56:10 +0900 Subject: [PATCH] [251126] feat: Featured Brands - NBCU Page Rendering using BestSeller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🕐 커밋 시간: 2025. 11. 26. 20:56:09 📊 변경 통계: • 총 파일: 7개 • 추가: +145줄 • 삭제: -64줄 📁 추가된 파일: + com.twin.app.shoptime/assets/images/featuredBrands/image-bg.png 📝 수정된 파일: ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/Banner/Banner.jsx ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.jsx ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.module.less ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUList/NBCUList.jsx ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/QuickMenu/QuickMenu.jsx 🔧 주요 변경 내용: • 중간 규모 기능 개선 • 모듈 구조 개선 --- .../assets/images/featuredBrands/image-bg.png | Bin 0 -> 44351 bytes .../FeaturedBrandsPanel/Banner/Banner.jsx | 13 ++- .../FeaturedBrandsPanel.jsx | 26 +++++- .../NBCUContent/NBCUContent.jsx | 82 ++++++++++++++++-- .../NBCUContent/NBCUContent.module.less | 27 ------ .../NBCUContent/NBCUList/NBCUList.jsx | 2 +- .../QuickMenu/QuickMenu.jsx | 59 ++++++++----- 7 files changed, 145 insertions(+), 64 deletions(-) create mode 100644 com.twin.app.shoptime/assets/images/featuredBrands/image-bg.png diff --git a/com.twin.app.shoptime/assets/images/featuredBrands/image-bg.png b/com.twin.app.shoptime/assets/images/featuredBrands/image-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9d71a539a443cf4bbbb102ae77d983071a8739 GIT binary patch literal 44351 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%0Dly(%>9vPTWO*c2di?CPatzhtR^ zEZvNMCWy{<k@`w+WkXdhy4=Xb7V_x
-
{patncNm}
+
{logoName}
diff --git a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx index 08fe6410..b7cf57e0 100644 --- a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx +++ b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx @@ -69,6 +69,7 @@ import TodaysDeals from "./TodaysDeals/TodaysDeals"; import UpComing from "./UpComing/UpComing"; import { setContainerLastFocusedElement } from "@enact/spotlight/src/container"; import { sortedIndexOf } from "lodash"; +import NBCUBgImage from "../../../assets/images/featuredBrands/image-bg.png"; const STRING_CONF = { CANCEL: "CANCEL", @@ -326,6 +327,24 @@ const FeaturedBrandsPanel = ({ isOnTop, panelInfo, spotlightId }) => { [brandLayoutInfo, panelInfo?.patnrId] ); + const processedBrandTopImgInfo = useMemo( + () => { + // NBCU 특별 처리 + if (panelInfo?.patnrId === 'NBCU') { + return { + topImgPath: NBCUBgImage, + topImgAlt: 'NBCU Background Image', + }; + } + // 다른 브랜드: brandTopImgInfo가 유효한 객체여야 함 + if (brandTopImgInfo && brandTopImgInfo.topImgPath) { + return brandTopImgInfo; + } + return null; + }, + [brandTopImgInfo, panelInfo?.patnrId] + ); + const doSendLogGNB = useCallback( (containerId, shelfOrder) => { if ( @@ -440,6 +459,9 @@ const FeaturedBrandsPanel = ({ isOnTop, panelInfo, spotlightId }) => { handleItemFocus={handleItemFocus} spotlightId={TEMPLATE_CODE_CONF.NBCU} shelfOrder={el.expsOrd} + shelfTitle={el.shptmBrndOptTpNm} + selectedPatnrId={selectedPatnrId} + order={idx + 1} /> ); @@ -995,10 +1017,10 @@ const FeaturedBrandsPanel = ({ isOnTop, panelInfo, spotlightId }) => { /> )} - {brandInfo && brandTopImgInfo && ( + {((brandInfo && processedBrandTopImgInfo) || panelInfo?.patnrId === 'NBCU') && processedBrandTopImgInfo && ( )} diff --git a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.jsx b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.jsx index 2b4ca69b..ba21da68 100644 --- a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.jsx +++ b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.jsx @@ -1,14 +1,78 @@ -import React, { memo } from 'react'; -import css from './NBCUContent.module.less'; +import React, { memo, useCallback, useState } from "react"; + +import Spotlight from "@enact/spotlight"; +import SpotlightContainerDecorator from "@enact/spotlight/SpotlightContainerDecorator"; + +import SectionTitle from "../../../components/SectionTitle/SectionTitle"; +import { $L } from "../../../utils/helperMethods"; +import css from "./NBCUContent.module.less"; +import NBCUList from "./NBCUList/NBCUList"; + +const STRING_CONF = { + NBCU: "NBCU", +}; + +const Container = SpotlightContainerDecorator( + { leaveFor: { right: "" }, enterTo: "last-focused" }, + "div" +); + +const NBCUContent = ({ + handleItemFocus, + spotlightId, + shelfOrder, + selectedPatnrId, + shelfTitle, + order, +}) => { + const [firstChk, setFirstChk] = useState(0); + + const _handleItemFocus = useCallback(() => { + if (handleItemFocus) handleItemFocus(spotlightId, shelfOrder); + + const c = Spotlight.getCurrent(); + if (firstChk === 0) { + if (c) { + let cAriaLabel = c.getAttribute("aria-label"); + if (cAriaLabel) { + cAriaLabel = "NBCU, Heading1," + cAriaLabel; + c.setAttribute("aria-label", cAriaLabel); + } + } + setFirstChk(1); + } else if (firstChk === 1) { + if (c) { + let cAriaLabel = c.getAttribute("aria-label"); + if (cAriaLabel) { + const newcAriaLabel = cAriaLabel.replace("NBCU, Heading1,", ""); + c.setAttribute("aria-label", newcAriaLabel); + } + } + } else { + return; + } + }, [handleItemFocus, firstChk, spotlightId, shelfOrder]); -const NBCUContent = ({ handleItemFocus, spotlightId, shelfOrder = 1 }) => { return ( -
-
-

NBCU

-

Content Coming Soon

-
-
+ + + + ); }; diff --git a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.module.less b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.module.less index 521148a2..ef0f8e01 100644 --- a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.module.less +++ b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUContent.module.less @@ -1,28 +1 @@ @import "../../../style/CommonStyle.module.less"; - -.container { - width: 100%; - padding: 40px 60px; - margin-bottom: 58px; -} - -.content { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 400px; -} - -.title { - font-size: 32px; - font-weight: bold; - margin-bottom: 20px; - color: #333; -} - -.message { - font-size: 18px; - color: #666; - margin: 0; -} diff --git a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUList/NBCUList.jsx b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUList/NBCUList.jsx index 21fc9214..df669d48 100644 --- a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUList/NBCUList.jsx +++ b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/NBCUContent/NBCUList/NBCUList.jsx @@ -49,7 +49,7 @@ const NBCUList = ({ handleItemFocus, spotlightId, shelfTitle, shelfOrder }) => { ); return ( - +
    - - {brandInfo.map((brandInfoItem, itemIndex) => ( - - ))} + {panelPatnrId === 'NBCU' ? ( + <> + + {brandInfo.map((brandInfoItem, itemIndex) => ( + + ))} + + ) : ( + brandInfo.map((brandInfoItem, itemIndex) => ( + + )) + )}