summaryrefslogtreecommitdiff
path: root/src/pages/_app.jsx
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-04-11 11:06:38 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-04-11 11:06:38 +0700
commit3df233e0c23e7d4503931ab6ec8ffc41642ac104 (patch)
treeccc032defe422f5fafc4a08af672833b2fe41835 /src/pages/_app.jsx
parent006c77a85786c24199db157d1d70f48b47311d35 (diff)
parentf0a720441def88187b3913268238c379362fb9d3 (diff)
Merge branch 'master' into development_tri/feedback_UAT
Diffstat (limited to 'src/pages/_app.jsx')
-rw-r--r--src/pages/_app.jsx22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index 634e631f..3c93d27f 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -1,11 +1,12 @@
import '../styles/globals.css'
import NextProgress from 'next-progress'
-import { useRouter } from 'next/router'
+import { useRouter, Router } from 'next/router'
import { AnimatePresence } from 'framer-motion'
import { Toaster } from 'react-hot-toast'
import { QueryClient, QueryClientProvider } from 'react-query'
import useDevice from '@/core/hooks/useDevice'
import { useEffect, useState } from 'react'
+import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner'
const queryClient = new QueryClient()
@@ -13,6 +14,18 @@ function MyApp({ Component, pageProps }) {
const router = useRouter()
const { isMobile } = useDevice()
+ const [animateLoader, setAnimateLoader] = useState(false)
+
+ useEffect(() => {
+ Router.events.on('routeChangeStart', () => setAnimateLoader(true))
+ Router.events.on('routeChangeComplete', () => setAnimateLoader(false))
+
+ return () => {
+ Router.events.off('routeChangeStart', () => setAnimateLoader(true))
+ Router.events.off('routeChangeComplete', () => setAnimateLoader(false))
+ }
+ }, [])
+
const [toasterStyle, setToasterStyle] = useState({})
useEffect(() => {
@@ -30,6 +43,11 @@ function MyApp({ Component, pageProps }) {
return (
<>
+ {animateLoader && (
+ <div className='w-screen h-screen z-[500] flex justify-center items-center backdrop-blur'>
+ <LogoSpinner />
+ </div>
+ )}
<Toaster
position='top-center'
containerStyle={toasterStyle}
@@ -45,7 +63,7 @@ function MyApp({ Component, pageProps }) {
initial={false}
onExitComplete={() => window.scrollTo(0, 0)}
>
- <Component {...pageProps} key={router.asPath} />
+ {!animateLoader && <Component {...pageProps} key={router.asPath} />}
</AnimatePresence>
</QueryClientProvider>
</>