feat(FN-2637): align usage window hide/show controls
- Remove the per-row eye toggle for already hidden usage windows so hidden rows no longer show a show/hide button - Keep hide controls visible for active rows and preserve existing hide interactions - Update UsageIndicator tests to assert hidden rows omit hide buttons and visible rows still render hide controls - Drop obsolete per-row unhide test now that restoring hidden windows is handled through the provider-level show hidden flow
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useState, useEffect, useCallback, useRef } from "react";
|
||||
import type { CSSProperties } from "react";
|
||||
import { X, RefreshCw, Activity, TrendingUp, CheckCircle, AlertTriangle, Eye, EyeOff } from "lucide-react";
|
||||
import { X, RefreshCw, Activity, TrendingUp, CheckCircle, AlertTriangle, Eye } from "lucide-react";
|
||||
import type { ProviderUsage, UsageWindow } from "../api";
|
||||
import { useUsageData } from "../hooks/useUsageData";
|
||||
import { ProviderIcon } from "./ProviderIcon";
|
||||
@@ -187,14 +187,16 @@ function UsageWindowRow({ window, viewMode, isHidden, onToggleHidden }: UsageWin
|
||||
<span className="usage-window-label">{window.label}</span>
|
||||
<div className="usage-window-header-controls">
|
||||
{!isHidden && <span className="usage-window-percentage">{headerText}</span>}
|
||||
<button
|
||||
className="btn-icon usage-window-hide-btn"
|
||||
onClick={onToggleHidden}
|
||||
aria-label={`${isHidden ? "Show" : "Hide"} ${window.label}`}
|
||||
data-testid="usage-window-hide-btn"
|
||||
>
|
||||
{isHidden ? <EyeOff size={14} /> : <Eye size={14} />}
|
||||
</button>
|
||||
{!isHidden && (
|
||||
<button
|
||||
className="btn-icon usage-window-hide-btn"
|
||||
onClick={onToggleHidden}
|
||||
aria-label={`Hide ${window.label}`}
|
||||
data-testid="usage-window-hide-btn"
|
||||
>
|
||||
<Eye size={14} />
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="usage-progress-wrapper">
|
||||
|
||||
@@ -673,6 +673,7 @@ describe("UsageIndicator", () => {
|
||||
expect(hiddenRow).toHaveClass("usage-window--hidden");
|
||||
expect(sessionLabel).not.toBeVisible();
|
||||
expect(screen.queryByText("45% used")).not.toBeInTheDocument();
|
||||
expect(screen.queryByRole("button", { name: "Hide Session (5h)" })).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("persists hidden windows to localStorage", () => {
|
||||
@@ -748,6 +749,8 @@ describe("UsageIndicator", () => {
|
||||
expect(screen.queryByTestId("usage-show-hidden-btn")).not.toBeInTheDocument();
|
||||
expect(screen.getByText("Session (5h)").closest(".usage-window")).not.toHaveClass("usage-window--hidden");
|
||||
expect(screen.getByText("Weekly").closest(".usage-window")).not.toHaveClass("usage-window--hidden");
|
||||
expect(screen.getByRole("button", { name: "Hide Session (5h)" })).toBeInTheDocument();
|
||||
expect(screen.getByRole("button", { name: "Hide Weekly" })).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("does not show provider-level show hidden button when no windows are hidden", () => {
|
||||
@@ -764,22 +767,6 @@ describe("UsageIndicator", () => {
|
||||
expect(screen.queryByTestId("usage-show-hidden-btn")).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it("allows un-hiding a specific hidden window", () => {
|
||||
mockUseUsageData.mockReturnValue({
|
||||
providers: mockProviders,
|
||||
loading: false,
|
||||
error: null,
|
||||
lastUpdated: new Date(),
|
||||
refresh: mockRefresh,
|
||||
});
|
||||
|
||||
render(<UsageIndicator isOpen={true} onClose={mockOnClose} projectId={TEST_PROJECT_ID} />);
|
||||
|
||||
fireEvent.click(screen.getByRole("button", { name: "Hide Session (5h)" }));
|
||||
fireEvent.click(screen.getByRole("button", { name: "Show Session (5h)" }));
|
||||
|
||||
expect(screen.getByText("Session (5h)").closest(".usage-window")).not.toHaveClass("usage-window--hidden");
|
||||
});
|
||||
|
||||
// ProviderIcon integration tests
|
||||
it("renders SVG provider icons instead of emoji", () => {
|
||||
|
||||
Reference in New Issue
Block a user