diff --git a/com.twin.app.shoptime/src/components/TToast/TToastEnhanced.jsx b/com.twin.app.shoptime/src/components/TToast/TToastEnhanced.jsx
index b92a2288..373703ac 100644
--- a/com.twin.app.shoptime/src/components/TToast/TToastEnhanced.jsx
+++ b/com.twin.app.shoptime/src/components/TToast/TToastEnhanced.jsx
@@ -58,14 +58,18 @@ export default function TToastEnhanced({
const timerRef = useRef(null);
const progressRef = useRef(null);
const cursorVisible = useSelector((state) => state.common.appStatus.cursorVisible);
+ const { popupVisible } = useSelector((state) => state.common.popup);
// BuyOption 포커스 이탈 감지 핸들러
- const handleBuyOptionBlur = (e) => {
- // 포커스가 BuyOption 컴포넌트 외부로 이동했는지 확인
- if (!e.currentTarget.contains(e.relatedTarget) && !cursorVisible) {
+ const handleBuyOptionBlur = (e) => {
+ // 포커스가 BuyOption 컴포넌트 외부로 이동했는지 확인
+ if(popupVisible){
+ return;
+ }
+ if (!e.currentTarget.contains(e.relatedTarget)) {
console.log('[TToastEnhanced] Focus left BuyOption - closing toast');
handleClose();
- }
+ }
};
// 애니메이션 시작
@@ -123,7 +127,9 @@ export default function TToastEnhanced({
console.log(
`[TToastEnhanced] Focus left ${type} after receiving focus - closing toast`
);
- handleClose();
+ if(type !== "buyOption"){
+ handleClose();
+ }
}
}
};
@@ -212,7 +218,7 @@ export default function TToastEnhanced({
{...rest}
>
{type === 'buyOption' ? (
-
+
state.coupon.productCouponSearchData);
const { userNumber } = useSelector((state) => state.common.appStatus.loginUserData);
const { popupVisible, activePopup } = useSelector((state) => state.common.popup);
+ const cursorVisible = useSelector((state) => state.common.appStatus.cursorVisible);
// ProductVideo 버전 관리 (1: 기존 modal 방식, 2: 내장 방식 , 3: 비디오 생략)
const [productVideoVersion, setProductVideoVersion] = useState(1);
// 비디오 재생 여부 flag (재생 전에는 minimize/restore 로직 비활성화)
@@ -877,7 +878,7 @@ export default function ProductAllSection({
);
//닫히도록
- const handleCloseToast = useCallback(() => {
+ const handleCloseToast = useCallback((e) => {
// 팝업이 열려있으면 닫지 않음
if (popupVisible) {
return; // 팝업이 활성이면 무시
@@ -886,6 +887,15 @@ export default function ProductAllSection({
setOpenToast(false);
}, [dispatch, popupVisible]);
+ const handleFocus = useCallback((e)=>{
+ // 팝업이 열려있으면 닫지 않음
+ if (popupVisible && cursorVisible) {
+ return; // 팝업이 활성이면 무시
+ }
+ dispatch(clearAllToasts());
+ setOpenToast(false);
+ },[dispatch, popupVisible, cursorVisible])
+
// 스크롤 컨테이너의 클릭 이벤트 추적용 로깅
const handleScrollContainerClick = useCallback((e) => {
// console.log('📱 [ProductAllSection] TScrollerDetail onClick 감지됨', {
@@ -1493,7 +1503,7 @@ export default function ProductAllSection({
}
return (
-
+
{/* Left Margin Section - 60px */}
diff --git a/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx b/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx
index 9c8a163a..595b40f7 100644
--- a/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx
+++ b/com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx
@@ -1247,7 +1247,7 @@ const BuyOption = ({
})
);
}
- dispatch(clearAllToasts());
+ // dispatch(clearAllToasts());
}, [
dispatch,
userNumber,
@@ -1458,6 +1458,7 @@ const BuyOption = ({
const handleCartMove = useCallback(() => {
dispatch(setHidePopup());
+ clearAllToasts();
dispatch(
pushPanel({
name: Config.panel_names.CART_PANEL,