From 76f7c674505e1fd86b5b57b99f341b6509459003 Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Fri, 5 Sep 2025 09:38:11 -0400 Subject: [PATCH] Fleet UI: Display UI after osVersions loads only (#32604) --- .../hosts/ManageHostsPage/ManageHostsPage.tsx | 20 +++++++++++-------- .../HostsFilterBlock/HostsFilterBlock.tsx | 6 ++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx index 3598365134..58dd0c5f16 100644 --- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx +++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tsx @@ -505,7 +505,7 @@ const ManageHostsPage = ({ } ); - const { data: osVersions } = useQuery< + const { data: osVersions, isLoading: isLoadingOsVersions } = useQuery< IOSVersionsResponse, Error, IOperatingSystemVersion[], @@ -1685,6 +1685,15 @@ const ManageHostsPage = ({ filter in queryParams // TODO: replace this with `Object.hasOwn(queryParams, filter)` when we upgrade to es2022 ); + // Ensures rendering table/pills simultaneously when all API calls are done + const isLoading = + isLoadingHosts || + isLoadingHostsCount || + isLoadingPolicy || + isLoadingOsVersions || + isLoadingConfigProfile || + isLoadingScriptBatchSummary; + const renderTable = () => { if (!config || !currentUser || !isRouteOk) { return ; @@ -1828,13 +1837,7 @@ const ManageHostsPage = ({ resultsTitle="hosts" columnConfigs={tableColumns} data={hostsData?.hosts || []} - isLoading={ - isLoadingHosts || - isLoadingHostsCount || - isLoadingPolicy || - isLoadingConfigProfile || - isLoadingScriptBatchSummary - } + isLoading={isLoading} manualSortBy defaultSortHeader={(sortBy[0] && sortBy[0].key) || DEFAULT_SORT_HEADER} defaultSortDirection={ @@ -2000,6 +2003,7 @@ const ManageHostsPage = ({ } onClickEditLabel={onEditLabelClick} onClickDeleteLabel={toggleDeleteLabelModal} + isLoading={isLoading} /> {renderNoEnrollSecretBanner()} {renderTable()} diff --git a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx index c3579325e1..3737251a7f 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx +++ b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx @@ -109,6 +109,7 @@ interface IHostsFilterBlockProps { onChangeScriptBatchStatusFilter: (newStatus: ScriptBatchHostCountV1) => void; onClickEditLabel: (evt: React.MouseEvent) => void; onClickDeleteLabel: () => void; + isLoading?: boolean; } /** @@ -162,9 +163,14 @@ const HostsFilterBlock = ({ onChangeScriptBatchStatusFilter, onClickEditLabel, onClickDeleteLabel, + isLoading = false, }: IHostsFilterBlockProps) => { const { currentUser, isOnGlobalTeam } = useContext(AppContext); + if (isLoading) { + return <>; + } + const renderLabelFilterPill = () => { if (selectedLabel) { const {