From 2bdb40d6064e8769218843e4f0b577e8e4e18e5b Mon Sep 17 00:00:00 2001 From: "hyunwoo93.cha" Date: Tue, 20 Feb 2024 16:34:27 +0900 Subject: [PATCH] =?UTF-8?q?[useScrollTo,=20useScrollToTop]=20-=20useScroll?= =?UTF-8?q?To:=20animate=20=ED=9A=A8=EA=B3=BC=20=EC=A0=9C=EC=96=B4=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20-=20useScrollToTop:?= =?UTF-8?q?=20scrollToTop=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20hook=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/hooks/useScrollTo.js | 8 ++--- .../src/hooks/useScrollToTop.js | 29 +++++++++++++++++++ com.twin.app.shoptime/src/utils/Config.js | 2 +- 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 com.twin.app.shoptime/src/hooks/useScrollToTop.js diff --git a/com.twin.app.shoptime/src/hooks/useScrollTo.js b/com.twin.app.shoptime/src/hooks/useScrollTo.js index 386f0cd2..e9ed2eb7 100644 --- a/com.twin.app.shoptime/src/hooks/useScrollTo.js +++ b/com.twin.app.shoptime/src/hooks/useScrollTo.js @@ -3,15 +3,15 @@ import React, { useCallback, useEffect, useRef } from "react"; export default function useScrollTo() { const scrollTo = useRef(); - const scrollTop = useCallback(() => { + const scrollTop = useCallback(({ animate = true } = {}) => { if (scrollTo && scrollTo.current) { - scrollTo.current({ position: { y: 0 }, animate: true }); + scrollTo.current({ position: { y: 0 }, animate: animate }); } }, []); - const scrollLeft = useCallback(() => { + const scrollLeft = useCallback(({ animate = false } = {}) => { if (scrollTo && scrollTo.current) { - scrollTo.current({ position: { x: 0 }, animate: false }); + scrollTo.current({ position: { x: 0 }, animate: animate }); } }, []); diff --git a/com.twin.app.shoptime/src/hooks/useScrollToTop.js b/com.twin.app.shoptime/src/hooks/useScrollToTop.js new file mode 100644 index 00000000..b7a06259 --- /dev/null +++ b/com.twin.app.shoptime/src/hooks/useScrollToTop.js @@ -0,0 +1,29 @@ +import { useCallback, useEffect, useRef } from "react"; + +import { Job } from "@enact/core/util"; + +export default function useScrollToTop(scrollTo) { + const jobRef = useRef( + new Job((func) => { + func(); + }, 0) + ); + + const handleScrollTop = useCallback(() => { + if (scrollTo) { + jobRef.current.start(() => scrollTo()); + } + }, [scrollTo]); + + const handleStopScrolling = useCallback(() => { + jobRef.current.stop(); + }, []); + + useEffect(() => { + return () => { + jobRef.current.stop(); + }; + }, []); + + return { handleScrollTop, handleStopScrolling }; +} diff --git a/com.twin.app.shoptime/src/utils/Config.js b/com.twin.app.shoptime/src/utils/Config.js index 394070c8..f404e9ea 100644 --- a/com.twin.app.shoptime/src/utils/Config.js +++ b/com.twin.app.shoptime/src/utils/Config.js @@ -6,7 +6,7 @@ export const TESTPANEL_KEY = "5325"; export const SFT_TEST = "5555"; export const SFT_TEST2 = "6666"; export const DEFAULT_SERVERTYPE = "qt2"; //system, qt2, qt, prd -export const DEFAULT_RIC_CODE = 'aic'; //system, aic, eic, ruc +export const DEFAULT_RIC_CODE = "aic"; //system, aic, eic, ruc export const panel_names = { INTRO_PANEL: "intropanel", HOME_PANEL: "homepanel",