diff --git a/com.twin.app.shoptime/src/components/GlobalPopup/GlobalPopup.jsx b/com.twin.app.shoptime/src/components/GlobalPopup/GlobalPopup.jsx index 96dc3849..35b2291a 100644 --- a/com.twin.app.shoptime/src/components/GlobalPopup/GlobalPopup.jsx +++ b/com.twin.app.shoptime/src/components/GlobalPopup/GlobalPopup.jsx @@ -6,6 +6,7 @@ import React, { useCallback, + useEffect, useMemo, } from 'react'; @@ -14,6 +15,8 @@ import { useSelector, } from 'react-redux'; +import Spotlight from '@enact/spotlight'; + import { setHidePopup } from '../../actions/commonActions'; import { getPopupConfig } from '../../constants/popupConfig'; import usePrevious from '../../hooks/usePrevious'; @@ -139,6 +142,18 @@ const GlobalPopup = () => { setImageDimensions(dimensions); }, []); + // Spotlight 제어: 팝업 오픈/클로즈 시 포커스 트래핑 + useEffect(() => { + if (popupVisible && activePopup === 'topBannerImagePopup') { + console.log("[GLOBAL-POPUP] Pausing Spotlight for modal popup"); + Spotlight.pause(); + return () => { + console.log("[GLOBAL-POPUP] Resuming Spotlight after modal close"); + Spotlight.resume(); + }; + } + }, [popupVisible, activePopup]); + // 현재 팝업 설정 const currentConfig = useMemo(() => { if (!activePopup) return null; @@ -231,27 +246,33 @@ const GlobalPopup = () => { const popupHeight = '804px'; return ( -
-
+ justifyContent: 'center', + alignItems: 'center', + zIndex: 9999 + }} + onClick={handlers.handleClose} + > +
e.stopPropagation()} + > { const dispatch = useDispatch(); const [imageDimensions, setImageDimensions] = useState({ width: 0, height: 0 }); + const closeButtonRef = useRef(null); const handleImageLoad = useCallback((e) => { const img = e.target; @@ -29,6 +30,14 @@ const TopBannerPopup = memo(({ title, imageUrl, imageAlt, onImageLoad }) => { dispatch(setHidePopup()); }, [dispatch]); + // 팝업이 마운트되었을 때 Close 버튼에 포커스 + useEffect(() => { + console.log("[TOP-BANNER-POPUP] Component mounted - focusing close button"); + if (closeButtonRef.current) { + closeButtonRef.current.focus(); + } + }, []); + return (
{/* Title Section */} @@ -48,7 +57,12 @@ const TopBannerPopup = memo(({ title, imageUrl, imageAlt, onImageLoad }) => { {/* Button Section */}
-
diff --git a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/TopBannerImage/TopBannerPopup.module.less b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/TopBannerImage/TopBannerPopup.module.less index bc108b95..d2b4fa6c 100644 --- a/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/TopBannerImage/TopBannerPopup.module.less +++ b/com.twin.app.shoptime/src/views/FeaturedBrandsPanel/TopBannerImage/TopBannerPopup.module.less @@ -1,3 +1,6 @@ +@import "../../../style/CommonStyle.module.less"; +@import "../../../style/utils.module.less"; + .container { width: 100%; height: 100%; @@ -86,12 +89,12 @@ text-align: center; &:hover { - background: #6a7278; + background: @PRIMARY_COLOR_RED; } &:focus { - outline: 2px solid #fff; - outline-offset: 2px; + background: @PRIMARY_COLOR_RED; + outline: none; } &:active {