Merge branch 'develop_si' into feature/si_log
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
padding-top: 60px;
|
||||
}
|
||||
.emptyBox {
|
||||
width: 1320px;
|
||||
width: 1200px;
|
||||
height: 288px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
@@ -39,5 +39,6 @@
|
||||
}
|
||||
.bestSeller {
|
||||
margin-top: 70px;
|
||||
width: 1320px;
|
||||
width: 1200px;
|
||||
padding-right:10px;
|
||||
}
|
||||
|
||||
@@ -341,24 +341,24 @@ const CartSidebar = ({ cartInfo }) => {
|
||||
<div className={css.summarySection}>
|
||||
<div className={css.header}>
|
||||
<div className={css.title}>Subtotal</div>
|
||||
<span className={css.itemCount}>{itemCount} Items</span>
|
||||
<span className={css.itemCount}>{userNumber ? itemCount : 0} Items</span>
|
||||
</div>
|
||||
<div className={css.borderLine} />
|
||||
<div className={css.priceList}>
|
||||
<div className={css.priceItem}>
|
||||
<span className={css.label}>Subtotal</span>
|
||||
<span className={css.value}>{formatPrice(subtotal)}</span>
|
||||
<span className={css.value}>{userNumber ? formatPrice(subtotal) : 0}</span>
|
||||
</div>
|
||||
<div className={css.priceItem}>
|
||||
<span className={css.label}>Option</span>
|
||||
<span className={css.value}>
|
||||
{formatPrice(optionTotal)}
|
||||
{userNumber ? formatPrice(optionTotal) : 0}
|
||||
</span>
|
||||
</div>
|
||||
<div className={css.priceItem}>
|
||||
<span className={css.label}>S&H</span>
|
||||
<span className={css.value}>
|
||||
{formatPrice(shippingHandling)}
|
||||
{userNumber ? formatPrice(shippingHandling) : 0}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -369,7 +369,7 @@ const CartSidebar = ({ cartInfo }) => {
|
||||
<span className={css.totalLabelSub}>(Before Tax)</span>
|
||||
</span>
|
||||
<span className={css.totalValue}>
|
||||
{formatPrice(orderTotalBeforeTax)}
|
||||
{userNumber ? formatPrice(orderTotalBeforeTax) : 0}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -391,7 +391,7 @@ const CartSidebar = ({ cartInfo }) => {
|
||||
className={css.checkoutButton}
|
||||
spotlightId="cart-checkout-button"
|
||||
onClick={handleCheckoutClick}
|
||||
disabled={itemsToCalculate.length === 0}
|
||||
disabled={checkedItems.length === 0 || (itemsToCalculate.length === 0 || !userNumber)}
|
||||
>
|
||||
Checkout
|
||||
</TButton>
|
||||
|
||||
@@ -115,11 +115,16 @@ export default function RollingUnit({
|
||||
const previousTimeRef = useRef();
|
||||
const arrRef = useRef([]);
|
||||
const bannerDataRef = useRef(bannerData);
|
||||
const rollingDataRef = useRef(rollingData);
|
||||
const filteredRollingDataRef = useRef(filteredRollingData);
|
||||
|
||||
// filteredRollingDataRef 업데이트
|
||||
useEffect(() => {
|
||||
filteredRollingDataRef.current = filteredRollingData;
|
||||
}, [filteredRollingData]);
|
||||
|
||||
const topContentsLogInfo = useMemo(() => {
|
||||
if (rollingDataRef.current) {
|
||||
const currentRollingData = rollingDataRef.current[startIndex];
|
||||
if (filteredRollingDataRef.current && filteredRollingDataRef.current.length > 0) {
|
||||
const currentRollingData = filteredRollingDataRef.current[startIndex];
|
||||
|
||||
let contId, contNm;
|
||||
|
||||
@@ -172,9 +177,10 @@ export default function RollingUnit({
|
||||
|
||||
return {};
|
||||
}, [shptmTmplCd, startIndex]);
|
||||
|
||||
const sendBannerLog = useCallback(
|
||||
(bannerClick) => {
|
||||
const data = rollingDataRef.current[startIndex];
|
||||
const data = filteredRollingDataRef.current[startIndex];
|
||||
const newParams =
|
||||
bannerData.banrLctnNo === '2'
|
||||
? {
|
||||
@@ -183,7 +189,7 @@ export default function RollingUnit({
|
||||
: {
|
||||
bannerType: 'Vertical',
|
||||
};
|
||||
if (rollingDataRef.current && nowMenu === LOG_MENU.HOME_TOP) {
|
||||
if (filteredRollingDataRef.current && nowMenu === LOG_MENU.HOME_TOP) {
|
||||
const logParams = {
|
||||
contextName: LOG_CONTEXT_NAME.HOME,
|
||||
messageId: bannerClick ? LOG_MESSAGE_ID.BANNER_CLICK : LOG_MESSAGE_ID.BANNER,
|
||||
@@ -305,12 +311,13 @@ export default function RollingUnit({
|
||||
|
||||
const categoryData = useMemo(() => {
|
||||
if (
|
||||
Object.keys(rollingData[startIndex]).length > 0 &&
|
||||
rollingData[startIndex].shptmLnkTpCd === LINK_TYPES.CATEGORY
|
||||
filteredRollingData.length > 0 &&
|
||||
Object.keys(filteredRollingData[startIndex]).length > 0 &&
|
||||
filteredRollingData[startIndex].shptmLnkTpCd === LINK_TYPES.CATEGORY
|
||||
) {
|
||||
if (homeCategory && homeCategory.length > 0) {
|
||||
const foundCategory = homeCategory.find(
|
||||
(data) => data.lgCatCd === rollingData[startIndex].lgCatCd
|
||||
(data) => data.lgCatCd === filteredRollingData[startIndex].lgCatCd
|
||||
);
|
||||
if (foundCategory) {
|
||||
return {
|
||||
@@ -321,10 +328,10 @@ export default function RollingUnit({
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}, [homeCategory, rollingData, startIndex]);
|
||||
}, [homeCategory, filteredRollingData, startIndex]);
|
||||
|
||||
const { originalPrice, discountedPrice, discountRate, offerInfo } =
|
||||
usePriceInfo(rollingData[startIndex].priceInfo) || {};
|
||||
usePriceInfo(filteredRollingData.length > 0 ? filteredRollingData[startIndex].priceInfo : {}) || {};
|
||||
|
||||
const handlePushPanel = useCallback(
|
||||
(name, panelInfo) => {
|
||||
@@ -350,10 +357,16 @@ export default function RollingUnit({
|
||||
);
|
||||
|
||||
const imageBannerClick = useCallback(() => {
|
||||
// 필터링된 데이터가 비어있으면 return
|
||||
if (!filteredRollingData || filteredRollingData.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (bannerId) {
|
||||
dispatch(setBannerIndex(bannerId, startIndex));
|
||||
}
|
||||
const currentData = rollingData[startIndex];
|
||||
|
||||
const currentData = filteredRollingData[startIndex];
|
||||
const linkType = currentData.shptmLnkTpCd;
|
||||
const bannerType = currentData.shptmBanrTpNm;
|
||||
|
||||
@@ -432,7 +445,7 @@ export default function RollingUnit({
|
||||
})
|
||||
);
|
||||
}, [
|
||||
rollingData,
|
||||
filteredRollingData,
|
||||
startIndex,
|
||||
bannerId,
|
||||
dispatch,
|
||||
@@ -443,6 +456,11 @@ export default function RollingUnit({
|
||||
]);
|
||||
|
||||
const videoClick = useCallback(() => {
|
||||
// 필터링된 데이터가 비어있으면 return
|
||||
if (!filteredRollingData || filteredRollingData.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const lastFocusedTargetId = getContainerId(Spotlight.getCurrent());
|
||||
const currentSpot = Spotlight.getCurrent();
|
||||
|
||||
@@ -463,7 +481,7 @@ export default function RollingUnit({
|
||||
dispatch(setBannerIndex(bannerId, startIndex));
|
||||
}
|
||||
|
||||
const currentData = rollingData[startIndex];
|
||||
const currentData = filteredRollingData[startIndex];
|
||||
|
||||
handleStartVideoPlayer({
|
||||
showUrl: currentData.showUrl,
|
||||
@@ -485,7 +503,7 @@ export default function RollingUnit({
|
||||
logTpNo: LOG_TP_NO.TOP_CONTENTS.CLICK,
|
||||
})
|
||||
);
|
||||
}, [rollingData, startIndex, bannerId, dispatch, handleStartVideoPlayer, topContentsLogInfo]);
|
||||
}, [filteredRollingData, startIndex, bannerId, dispatch, handleStartVideoPlayer, topContentsLogInfo]);
|
||||
|
||||
// 10초 롤링
|
||||
useEffect(() => {
|
||||
@@ -537,7 +555,7 @@ export default function RollingUnit({
|
||||
|
||||
useEffect(() => {
|
||||
sendBannerLog();
|
||||
}, [rollingDataRef, nowMenu, startIndex]);
|
||||
}, [filteredRollingDataRef, nowMenu, startIndex]);
|
||||
|
||||
useEffect(() => {
|
||||
if (nowMenu !== LOG_MENU.HOME_TOP) {
|
||||
@@ -551,7 +569,7 @@ export default function RollingUnit({
|
||||
spotlightId={`container-${spotlightId}`}
|
||||
onFocus={shelfFocus}
|
||||
>
|
||||
{filteredRollingData !== 1 ? (
|
||||
{filteredRollingData.length !== 1 ? (
|
||||
<SpottableComponent
|
||||
className={classNames(css.arrow, css.leftBtn)}
|
||||
onClick={handlePrev}
|
||||
@@ -564,7 +582,7 @@ export default function RollingUnit({
|
||||
/>
|
||||
) : null}
|
||||
|
||||
{filteredRollingData && filteredRollingData[startIndex].shptmBanrTpNm === 'Image Banner' ? (
|
||||
{filteredRollingData && filteredRollingData.length > 0 && filteredRollingData[startIndex].shptmBanrTpNm === 'Image Banner' ? (
|
||||
<SpottableComponent
|
||||
className={classNames(css.itemBox, isHorizontal && css.isHorizontal)}
|
||||
onClick={imageBannerClick}
|
||||
@@ -582,7 +600,7 @@ export default function RollingUnit({
|
||||
<img src={filteredRollingData[startIndex].tmnlImgPath} />
|
||||
</div>
|
||||
</SpottableComponent>
|
||||
) : filteredRollingData[startIndex].shptmBanrTpNm === 'LIVE' ? (
|
||||
) : filteredRollingData && filteredRollingData.length > 0 && filteredRollingData[startIndex].shptmBanrTpNm === 'LIVE' ? (
|
||||
<SpottableComponent
|
||||
className={classNames(css.itemBox, isHorizontal && css.isHorizontal)}
|
||||
onClick={videoClick}
|
||||
@@ -634,7 +652,7 @@ export default function RollingUnit({
|
||||
/>
|
||||
</p>
|
||||
</SpottableComponent>
|
||||
) : filteredRollingData[startIndex].shptmBanrTpNm === 'VOD' ? (
|
||||
) : filteredRollingData && filteredRollingData.length > 0 && filteredRollingData[startIndex].shptmBanrTpNm === 'VOD' ? (
|
||||
<SpottableComponent
|
||||
className={classNames(css.itemBox, isHorizontal && css.isHorizontal)}
|
||||
onClick={videoClick}
|
||||
@@ -682,7 +700,7 @@ export default function RollingUnit({
|
||||
)}
|
||||
</div>
|
||||
</SpottableComponent>
|
||||
) : filteredRollingData[startIndex].shptmBanrTpNm === "Today's Deals" ? (
|
||||
) : filteredRollingData && filteredRollingData.length > 0 && filteredRollingData[startIndex].shptmBanrTpNm === "Today's Deals" ? (
|
||||
<SpottableComponent
|
||||
className={classNames(
|
||||
css.itemBox,
|
||||
@@ -738,7 +756,7 @@ export default function RollingUnit({
|
||||
</SpottableComponent>
|
||||
) : null}
|
||||
|
||||
{filteredRollingData !== 1 ? (
|
||||
{filteredRollingData.length !== 1 ? (
|
||||
<SpottableComponent
|
||||
className={classNames(css.arrow, css.rightBtn)}
|
||||
onClick={handleNext}
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
||||
import React, {
|
||||
useCallback,
|
||||
useEffect,
|
||||
useMemo,
|
||||
useRef,
|
||||
} from 'react';
|
||||
|
||||
import classNames from 'classnames';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import {
|
||||
useDispatch,
|
||||
useSelector,
|
||||
} from 'react-redux';
|
||||
|
||||
import Spotlight from '@enact/spotlight';
|
||||
import SpotlightContainerDecorator from '@enact/spotlight/SpotlightContainerDecorator';
|
||||
import SpotlightContainerDecorator
|
||||
from '@enact/spotlight/SpotlightContainerDecorator';
|
||||
import Spottable from '@enact/spotlight/Spottable';
|
||||
import Marquee from '@enact/ui/Marquee';
|
||||
|
||||
import defaultLogoImg from '../../../../assets/images/ic-tab-partners-default@3x.png';
|
||||
import defaultLogoImg
|
||||
from '../../../../assets/images/ic-tab-partners-default@3x.png';
|
||||
import { setShowPopup } from '../../../actions/commonActions';
|
||||
import CustomImage from '../../../components/CustomImage/CustomImage';
|
||||
import { ACTIVE_POPUP } from '../../../utils/Config';
|
||||
@@ -388,7 +398,7 @@ function PlayerOverlayContents({
|
||||
e.preventDefault();
|
||||
// tabIndexV2가 2일 때만 ShopNowButton으로 포커스
|
||||
if (tabContainerVersion === 2 && tabIndexV2 === 2) {
|
||||
Spotlight.focus('below-tab-shop-now-button');
|
||||
Spotlight.focus('live-channel-next-button');
|
||||
}
|
||||
}}
|
||||
aria-label="Caption"
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
import React from 'react';
|
||||
|
||||
import { compose } from 'ramda/src/compose';
|
||||
|
||||
import Spotlight from '@enact/spotlight';
|
||||
import Spottable from '@enact/spotlight/Spottable';
|
||||
import { Marquee, MarqueeController } from '@enact/ui/Marquee';
|
||||
import { compose } from 'ramda/src/compose';
|
||||
import {
|
||||
Marquee,
|
||||
MarqueeController,
|
||||
} from '@enact/ui/Marquee';
|
||||
|
||||
import icon_arrow_dwon from '../../../../../assets/images/player/icon_tabcontainer_arrow_down.png';
|
||||
import icon_arrow_dwon
|
||||
from '../../../../../assets/images/player/icon_tabcontainer_arrow_down.png';
|
||||
import CustomImage from '../../../../components/CustomImage/CustomImage';
|
||||
import { SpotlightIds } from '../../../../utils/SpotlightIds';
|
||||
import css from './LiveChannelNext.module.less';
|
||||
@@ -18,14 +23,14 @@ export default function LiveChannelNext({
|
||||
programName = 'Sandal Black...',
|
||||
backgroundColor = 'linear-gradient(180deg, #284998 0%, #06B0EE 100%)',
|
||||
onClick,
|
||||
onFocus,
|
||||
spotlightId = 'live-channel-next-button',
|
||||
}) {
|
||||
const handleSpotlightUp = (e) => {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
Spotlight.focus(SpotlightIds.PLAYER_BACK_BUTTON);
|
||||
Spotlight.focus('player-subtitlebutton');
|
||||
};
|
||||
|
||||
const handleSpotlightDown = (e) => {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
@@ -43,6 +48,7 @@ export default function LiveChannelNext({
|
||||
<SpottableDiv
|
||||
className={css.liveChannelButton}
|
||||
onClick={onClick}
|
||||
onFocus={onFocus}
|
||||
spotlightId={spotlightId}
|
||||
onSpotlightUp={handleSpotlightUp}
|
||||
onSpotlightDown={handleSpotlightDown}
|
||||
|
||||
@@ -50,7 +50,7 @@ export default function TabContainerV2({
|
||||
onTabClose, // 탭 닫기 콜백 함수
|
||||
tabVisible,
|
||||
}) {
|
||||
const youmaylikeInfos = useSelector((state) => state.main.youmaylikeInfos);
|
||||
const youmaylikeInfos = useSelector((state) => state.main.youmaylikeInfos);
|
||||
|
||||
// 다음 재생 가능한 쇼 찾기
|
||||
const findNextPlayableShow = useCallback((currentPlayList, currentIndex) => {
|
||||
@@ -337,6 +337,7 @@ export default function TabContainerV2({
|
||||
}
|
||||
onClick={onLiveNext}
|
||||
spotlightId="live-channel-next-button"
|
||||
onFocus={onLiveNext}
|
||||
/>
|
||||
<ShopNowButton onClick={onShopNowButtonClick} />
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user