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)}