From 2c07eb47d8ff5b9396de2d8d168e2417938a21d4 Mon Sep 17 00:00:00 2001 From: wadii Date: Thu, 16 Oct 2025 10:16:37 +0200 Subject: [PATCH 1/3] feat: show-card-loading-state-and-prevent-opening-until-data-arrives --- frontend/web/components/AppLoader.js | 16 ------------ frontend/web/components/AppLoader.tsx | 26 +++++++++++++++++++ .../base/accordion/AccordionCard.tsx | 9 +++++-- .../metrics/EnvironmentMetricsList.tsx | 8 ++---- frontend/web/project/project-components.js | 7 ++--- 5 files changed, 39 insertions(+), 27 deletions(-) delete mode 100644 frontend/web/components/AppLoader.js create mode 100644 frontend/web/components/AppLoader.tsx diff --git a/frontend/web/components/AppLoader.js b/frontend/web/components/AppLoader.js deleted file mode 100644 index 353e848278ed..000000000000 --- a/frontend/web/components/AppLoader.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -export default function AppLoader() { - return ( -
- -
- ) -} diff --git a/frontend/web/components/AppLoader.tsx b/frontend/web/components/AppLoader.tsx new file mode 100644 index 000000000000..fc88acade909 --- /dev/null +++ b/frontend/web/components/AppLoader.tsx @@ -0,0 +1,26 @@ +import React, { FC } from 'react' + +interface AppLoaderProps { + style?: React.CSSProperties +} + +const AppLoader: FC = ({ style }) => { + return ( +
+ +
+ ) +} + +export default AppLoader diff --git a/frontend/web/components/base/accordion/AccordionCard.tsx b/frontend/web/components/base/accordion/AccordionCard.tsx index 124023643f60..48f9b2bd9471 100644 --- a/frontend/web/components/base/accordion/AccordionCard.tsx +++ b/frontend/web/components/base/accordion/AccordionCard.tsx @@ -8,11 +8,13 @@ interface AccordionCardProps { title?: string className?: string defaultOpen?: boolean + isLoading?: boolean } const AccordionCard: FC = ({ children, defaultOpen = false, + isLoading = false, title = 'Summary', }) => { const [open, setOpen] = useState(defaultOpen) @@ -26,10 +28,13 @@ const AccordionCard: FC = ({ display: 'flex', justifyContent: 'space-between', }} - onClick={() => setOpen(!open)} + onClick={isLoading ? undefined : () => setOpen(!open)} className='d-flex flex-row justify-content-between font-weight-medium' > - {title} +
+
{title}
{' '} + {isLoading && } +
= ({ forceRefetch, projectId, }) => { - const { data, refetch } = useGetEnvironmentMetricsQuery({ + const { data, isLoading, refetch } = useGetEnvironmentMetricsQuery({ id: environmentApiKey, }) @@ -30,13 +30,9 @@ const EnvironmentMetricsList: FC = ({ } }, [forceRefetch, refetch]) - if (!data || data.metrics.length === 0) { - return null - } - return (
- +
Date: Thu, 16 Oct 2025 10:20:39 +0200 Subject: [PATCH 2/3] feat: hide-chevron-when-loading --- .../components/base/accordion/AccordionCard.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/frontend/web/components/base/accordion/AccordionCard.tsx b/frontend/web/components/base/accordion/AccordionCard.tsx index 48f9b2bd9471..646320d31952 100644 --- a/frontend/web/components/base/accordion/AccordionCard.tsx +++ b/frontend/web/components/base/accordion/AccordionCard.tsx @@ -32,15 +32,17 @@ const AccordionCard: FC = ({ className='d-flex flex-row justify-content-between font-weight-medium' >
-
{title}
{' '} + {title} {isLoading && }
- - - + {!isLoading && ( + + + + )}
{children}
From 24edb2acd9468531012da2ee2c276f3dc886940b Mon Sep 17 00:00:00 2001 From: wadii Date: Thu, 16 Oct 2025 10:23:41 +0200 Subject: [PATCH 3/3] feat: removed-unused-props-in-AppLoader --- frontend/web/components/AppLoader.tsx | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/frontend/web/components/AppLoader.tsx b/frontend/web/components/AppLoader.tsx index fc88acade909..eff66251d48f 100644 --- a/frontend/web/components/AppLoader.tsx +++ b/frontend/web/components/AppLoader.tsx @@ -1,22 +1,14 @@ import React, { FC } from 'react' -interface AppLoaderProps { - style?: React.CSSProperties -} - -const AppLoader: FC = ({ style }) => { +const AppLoader: FC = () => { return (