refactor(pleb-table, project-support): clean up concatenation, improve filter handling, and optimize layout

This commit is contained in:
fsociety
2025-06-04 17:55:15 +02:00
parent 26c8b06162
commit 936e27a31c
2 changed files with 22 additions and 18 deletions

View File

@@ -81,8 +81,7 @@ final class EinundzwanzigPlebTable extends PowerGridComponent
->add( ->add(
'payment', 'payment',
fn(EinundzwanzigPleb $model) fn(EinundzwanzigPleb $model)
=> $model->paymentEvents->count() > 0 && $model->paymentEvents->first( => $model->paymentEvents->count() > 0 && $model->paymentEvents->first()->paid ? '<span class="text-green-500">'.number_format(
)->paid ? '<span class="text-green-500">' . number_format(
$model->paymentEvents->first()->amount, $model->paymentEvents->first()->amount,
0, 0,
',', ',',

View File

@@ -14,9 +14,10 @@ use function Livewire\Volt\{state, mount, on, computed, updated};
name('association.projectSupport'); name('association.projectSupport');
state(['activeFilter' => 'all',])->url();
state([ state([
'search' => '', 'search' => '',
'activeFilter' => 'all',
'projects' => fn() 'projects' => fn()
=> \App\Models\ProjectProposal::query() => \App\Models\ProjectProposal::query()
->with([ ->with([
@@ -80,6 +81,10 @@ $confirmDelete = function ($id) {
]); ]);
}; };
$setFilter = function ($filter) {
$this->activeFilter = $filter;
};
$delete = function ($id) { $delete = function ($id) {
\App\Models\ProjectProposal::query()->findOrFail($id)->delete(); \App\Models\ProjectProposal::query()->findOrFail($id)->delete();
$this->projects = \App\Models\ProjectProposal::query() $this->projects = \App\Models\ProjectProposal::query()
@@ -132,25 +137,25 @@ $delete = function ($id) {
<div class="mb-5"> <div class="mb-5">
<ul class="flex flex-wrap -m-1"> <ul class="flex flex-wrap -m-1">
<li class="m-1"> <li class="m-1">
<button wire:click="$set('activeFilter', 'all')" <button wire:click="setFilter('all')"
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'all' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition"> class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'all' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition">
Alle Alle
</button> </button>
</li> </li>
<li class="m-1"> <li class="m-1">
<button wire:click="$set('activeFilter', 'new')" <button wire:click="setFilter('new')"
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'new' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition"> class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'new' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition">
Neu Neu
</button> </button>
</li> </li>
<li class="m-1"> <li class="m-1">
<button wire:click="$set('activeFilter', 'supported')" <button wire:click="setFilter('supported')"
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'supported' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition"> class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'supported' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition">
Unterstützt Unterstützt
</button> </button>
</li> </li>
<li class="m-1"> <li class="m-1">
<button wire:click="$set('activeFilter', 'rejected')" <button wire:click="setFilter('rejected')"
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'rejected' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition"> class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border {{ $activeFilter === 'rejected' ? 'border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800' : 'border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400' }} transition">
Abgelehnt Abgelehnt
</button> </button>