diff --git a/components/Loading/index.tsx b/components/Loading/index.tsx index ef08e829..cfd82f9a 100644 --- a/components/Loading/index.tsx +++ b/components/Loading/index.tsx @@ -20,7 +20,7 @@ export default function Loading ({ size = 60, color }: LoadingProps): React.Reac }, [color]) return ( -
+
([]) const [showFilters, setShowFilters] = useState(false) const [buttons, setButtons] = useState([]) + const [isLoading, setIsLoading] = useState(false) const setPeriodFromString = (data?: DashboardData, periodString?: PeriodString): void => { if (data === undefined) return @@ -118,6 +119,7 @@ export default function Dashboard ({ user }: PaybuttonsProps): React.ReactElemen useEffect(() => { const fetchData = async (): Promise => { + setIsLoading(true) let url = 'api/dashboard' if (selectedButtonIds.length > 0) { url += `?buttonIds=${selectedButtonIds.join(',')}` @@ -129,6 +131,7 @@ export default function Dashboard ({ user }: PaybuttonsProps): React.ReactElemen }) const json = await res.json() setDashboardData(json) + setIsLoading(false) } fetchData().catch(console.error) const savedActivePeriodString = loadStateFromCookie(COOKIE_NAMES.DASHBOARD_FILTER, undefined) as (PeriodString | undefined) @@ -152,7 +155,7 @@ export default function Dashboard ({ user }: PaybuttonsProps): React.ReactElemen if (dashboardData === undefined || activePeriod === undefined) { return ( <> - + ) @@ -160,7 +163,8 @@ export default function Dashboard ({ user }: PaybuttonsProps): React.ReactElemen return ( <> - + + {isLoading && }
setShowFilters(!showFilters)}