From 855caac0934fee6b2d8f1882235ae33c20e683a5 Mon Sep 17 00:00:00 2001 From: Noah Talerman <47070608+noahtalerman@users.noreply.github.com> Date: Fri, 15 May 2026 11:12:56 -0400 Subject: [PATCH] Fleet-maintained app rollbacks: Fix tooltips (#45599) For the following bug: - https://github.com/fleetdm/fleet/issues/45597 --- .../components/FileDetails/FileDetails.tsx | 4 +-- .../forms/PackageForm/PackageForm.tsx | 1 + .../PackageVersionSelector.tests.tsx | 26 ++++++++++++-- .../PackageVersionSelector.tsx | 34 ++++++++++++------- 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/frontend/components/FileDetails/FileDetails.tsx b/frontend/components/FileDetails/FileDetails.tsx index eedff12f7f..61a46f2c91 100644 --- a/frontend/components/FileDetails/FileDetails.tsx +++ b/frontend/components/FileDetails/FileDetails.tsx @@ -122,8 +122,8 @@ const FileDetails = ({ onFileSelect && (gitopsCompatible ? ( renderEditButton(disableChildren) } diff --git a/frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx b/frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx index 1524db6ccd..b6e439705d 100644 --- a/frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx +++ b/frontend/pages/SoftwarePage/components/forms/PackageForm/PackageForm.tsx @@ -465,6 +465,7 @@ const PackageForm = ({ versionOptions={versionOptions} onSelectVersion={onSelectVersion} className={`${baseClass}__version-selector`} + isGitOpsMode={gitOpsModeEnabled} /> ); }; diff --git a/frontend/pages/SoftwarePage/components/forms/PackageVersionSelector/PackageVersionSelector.tests.tsx b/frontend/pages/SoftwarePage/components/forms/PackageVersionSelector/PackageVersionSelector.tests.tsx index b9353e60e1..d4bd92e492 100644 --- a/frontend/pages/SoftwarePage/components/forms/PackageVersionSelector/PackageVersionSelector.tests.tsx +++ b/frontend/pages/SoftwarePage/components/forms/PackageVersionSelector/PackageVersionSelector.tests.tsx @@ -34,6 +34,11 @@ describe("PackageVersionSelector component", () => { expect( screen.queryByText("Latest (2.0.0)", { exact: false }) ).not.toBeInTheDocument(); + + // No tooltip when there is only one version (nothing to roll back to) + expect( + document.querySelector(".component__tooltip-wrapper__element") + ).toBeNull(); }); it("renders the package version dropdown when there are package versions to choose from", () => { @@ -134,7 +139,7 @@ describe("PackageVersionSelector component", () => { expect(latestOptionWrapper).toHaveAttribute("aria-disabled", "true"); }); - it("shows the GitOps rollback tooltip text when the selected version is the first (latest) option", async () => { + it("shows the rollback tooltip when the latest version is selected and not in GitOps mode", async () => { const { user } = renderWithSetup( { /> ); - // TooltipWrapper attaches tooltip to this element: const tooltipAnchor = document.querySelector( ".component__tooltip-wrapper__element" ) as HTMLElement; @@ -163,6 +167,24 @@ describe("PackageVersionSelector component", () => { }); }); + it("shows no tooltip when in GitOps mode (parent handles the GitOps tooltip)", () => { + render( + + ); + + expect( + document.querySelector(".component__tooltip-wrapper__element") + ).toBeNull(); + }); + it("shows the update-to-latest tooltip text when the selected version is not the first (latest) option", async () => { const { user } = renderWithSetup( void; + isGitOpsMode?: boolean; } const PackageVersionSelector = ({ @@ -34,6 +35,7 @@ const PackageVersionSelector = ({ versionOptions, selectedVersion, onSelectVersion, + isGitOpsMode = false, }: IPackageVersionSelectorProps) => { if (versionOptions.length === 0) { return null; @@ -47,24 +49,30 @@ const PackageVersionSelector = ({ onChange={(version) => onSelectVersion(version?.value || "")} options={disableAllUIOptions(versionOptions, selectedVersion)} // Replace with "versions" when we want to enable selecting versions in the UI placeholder="Select a version" + isDisabled={isGitOpsMode} /> ); + if (isGitOpsMode || versionOptions.length < 2) { + return renderDropdown(); + } + + const tipContent = + selectedVersion === versionOptions[0].value ? ( + <> + Currently, you can only use GitOps
+ to roll back (UI coming soon). + + ) : ( + <> + Currently, to update to latest you have +
to delete and re-add the software. + + ); + return ( - Currently, you can only use GitOps
- to roll back (UI coming soon). - - ) : ( - <> - Currently, to update to latest you have -
to delete and re-add the software. - - ) - } + tipContent={tipContent} position="top" showArrow underline={false}