From 3b9773394ca27b5f7fa0808e042d4069b58edd80 Mon Sep 17 00:00:00 2001 From: optrader Date: Sat, 15 Nov 2025 16:20:16 +0900 Subject: [PATCH] [251115] fix: TScrollerDetail Scroll MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๐Ÿ• ์ปค๋ฐ‹ ์‹œ๊ฐ„: 2025. 11. 15. 16:20:16 ๐Ÿ“Š ๋ณ€๊ฒฝ ํ†ต๊ณ„: โ€ข ์ด ํŒŒ์ผ: 1๊ฐœ โ€ข ์ถ”๊ฐ€: +15์ค„ ๐Ÿ“ ์ˆ˜์ •๋œ ํŒŒ์ผ: ~ com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx ๐Ÿ”ง ์ฃผ์š” ๋ณ€๊ฒฝ ๋‚ด์šฉ: โ€ข UI ์ปดํฌ๋„ŒํŠธ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  --- .../components/TScroller/TScrollerDetail.jsx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx b/com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx index 25bd410f..d679315e 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/components/TScroller/TScrollerDetail.jsx @@ -6,6 +6,7 @@ import { useSelector } from 'react-redux'; import { off, on } from '@enact/core/dispatcher'; import { Job } from '@enact/core/util'; import Scroller from '@enact/sandstone/Scroller'; +import Spotlight from '@enact/spotlight'; import AutoScrollAreaDetail, { POSITION } from '../AutoScrollAreaDetail/AutoScrollAreaDetail'; import css from './TScrollerDetail.module.less'; @@ -41,6 +42,7 @@ const TScrollerDetail = forwardRef( const isScrolling = useRef(false); const scrollPosition = useRef('top'); + const thumbElementRef = useRef(null); // ์Šคํฌ๋กค๋ฐ” thumb ์š”์†Œ ์ €์žฅ const scrollToRef = useRef(null); const scrollHorizontalPos = useRef(0); @@ -100,6 +102,12 @@ const TScrollerDetail = forwardRef( const _onScrollStart = useCallback( (e) => { + // ์Šคํฌ๋กค ์‹œ์ž‘ ์‹œ ํ˜„์žฌ ํฌ์ปค์Šค๋œ ์š”์†Œ๊ฐ€ thumb์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์ €์žฅ + const currentFocused = Spotlight.getCurrent(); + if (currentFocused && currentFocused.getAttribute('aria-label')?.includes('scroll')) { + thumbElementRef.current = currentFocused; + } + if (onScrollStart) { onScrollStart(e); } @@ -148,6 +156,13 @@ const TScrollerDetail = forwardRef( if (setCheckScrollPosition && prevPosition !== scrollPosition.current) { setCheckScrollPosition(scrollPosition.current); } + + // ์Šคํฌ๋กค ์™„๋ฃŒ ํ›„ thumb์œผ๋กœ ํฌ์ปค์Šค ๋ณต๊ตฌ + if (thumbElementRef.current) { + setTimeout(() => { + Spotlight.focus(thumbElementRef.current); + }, 50); + } }, [onScrollStop] );