From cd992e72e10f96cf542909b535fd5ad6b5e7d8aa Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Thu, 29 Oct 2026 10:53:44 +0100 Subject: [PATCH] feat(tables): filter tables by clicking a cell value Click a type, status, server, source, or role value in a table row to filter the table by that value. Click it again to remove the filter. Covers the environment resources, deployments, application and service backups, and team members tables. Co-Authored-By: Claude Opus 5.5 --- resources/css/app.css | 32 +++++++++++++++ .../application/backup/index.blade.php | 7 +++- .../application/deployment/index.blade.php | 39 ++++++++++++++++--- .../livewire/project/resource/index.blade.php | 23 ++++++++--- .../service/volume-backup/index.blade.php | 14 ++++++- .../views/livewire/team/member.blade.php | 8 ++-- 6 files changed, 105 insertions(+), 18 deletions(-) diff --git a/resources/css/app.css b/resources/css/app.css index 07aa70d5eb..453feea16d 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -3070,6 +3070,38 @@ input[type="search"]::-webkit-search-results-decoration { background: rgba(255, 255, 255, 0.02); } +/* A table cell value that filters the table by that value on click. */ +.table-filter-value { + position: relative; + z-index: 1; + max-width: 100%; + pointer-events: auto; + cursor: pointer; + text-align: left; + text-decoration-line: underline; + text-decoration-color: transparent; + text-underline-offset: 2px; + transition: color 0.15s, border-color 0.15s, text-decoration-color 0.15s; +} + +.table-filter-value:hover { + color: var(--color-black); + text-decoration-color: currentColor; +} + +.dark .table-filter-value:hover { + color: var(--color-white); +} + +.table-filter-value.table-filter-badge:hover { + text-decoration-color: transparent; + border-color: var(--color-neutral-400); +} + +.dark .table-filter-value.table-filter-badge:hover { + border-color: rgba(255, 255, 255, 0.3); +} + .env-table-grid { grid-template-columns: minmax(14rem, 2.5fr) 4.8rem 6rem 4rem 4.5rem 4.8rem 4.2rem 3rem; } diff --git a/resources/views/livewire/project/application/backup/index.blade.php b/resources/views/livewire/project/application/backup/index.blade.php index d60651df80..14745c8e7c 100644 --- a/resources/views/livewire/project/application/backup/index.blade.php +++ b/resources/views/livewire/project/application/backup/index.blade.php @@ -205,7 +205,12 @@ title="{{ $backup->targetName() }}"> {{ $backup->targetName() }} - {{ $backup->targetType() }} + + {{ $backup->targetType() }} + {{ $backup->frequency }} diff --git a/resources/views/livewire/project/application/deployment/index.blade.php b/resources/views/livewire/project/application/deployment/index.blade.php index f7875deba2..9e72863d45 100644 --- a/resources/views/livewire/project/application/deployment/index.blade.php +++ b/resources/views/livewire/project/application/deployment/index.blade.php @@ -236,6 +236,15 @@ (bool) data_get($deployment, 'is_api') => 'API', default => 'Manual', }; + $sourceKey = match (true) { + $pullRequestId > 0 => 'pull-request', + (bool) data_get($deployment, 'is_webhook') => 'webhook', + (bool) data_get($deployment, 'rollback') => 'rollback', + (bool) data_get($deployment, 'is_api') => 'api', + default => 'manual', + }; + $serverId = data_get($deployment, 'server_id'); + $serverName = data_get($deployment, 'server_name') ?: data_get($application, 'destination.server.name', '-'); $duration = match ($deploymentStatus) { 'queued' => 'Waiting', 'in_progress' => calculateDuration(data_get($deployment, 'created_at'), now()), @@ -264,9 +273,21 @@ x-bind:aria-busy="selecting === '{{ data_get($deployment, 'deployment_uuid') }}'" @endif> @unless ($embedded) - + + + @endunless - {{ $sourceLabel }} + @if ($embedded) + {{ $sourceLabel }} + @else + + + + @endif @if (data_get($deployment, 'commit')) @@ -285,7 +306,7 @@ @endif @if ($embedded) @endif @@ -295,9 +316,15 @@ @endunless {{ $duration }} - - {{ data_get($deployment, 'server_name') ?: data_get($application, 'destination.server.name', '-') }} - + @if (! $embedded && $serverId) + + + + @else + {{ $serverName }} + @endif @if ($embedded) -
+
+ +
-
- +
+ @@ -226,8 +232,13 @@ -
-
+
+ +