Refactor VacationForm and VacationInfolist to enhance date picker functionality and improve localization. Introduce new sections in VacationInfolist for better organization of information, and add missing labels in multiple languages for improved user experience.

This commit is contained in:
Mekan1206
2026-08-02 21:38:50 +05:00
parent 76416de568
commit 0b6ef45a40
5 changed files with 91 additions and 51 deletions

View File

@@ -21,10 +21,13 @@ class VacationForm
->options(VacationType::class)
->required()
->native(false),
HrForm::leaveDatePicker('start_date', __('hr.fields.start_date')),
HrForm::leaveDatePicker('end_date', __('hr.fields.end_date')),
HrForm::leaveDatePicker('start_date', __('hr.fields.start_date'))
->native(false),
HrForm::leaveDatePicker('end_date', __('hr.fields.end_date'))
->native(false),
DatePicker::make('return_date')
->label(__('hr.fields.return_date')),
->label(__('hr.fields.return_date'))
->native(false),
HrForm::leaveDaysDisplay(),
Textarea::make('reason')
->label(__('hr.fields.reason'))

View File

@@ -1,9 +1,15 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\Vacations\Schemas;
use App\Enums\ApprovalStatus;
use App\Enums\VacationType;
use App\Models\Vacation;
use Filament\Infolists\Components\ImageEntry;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
class VacationInfolist
@@ -12,54 +18,73 @@ class VacationInfolist
{
return $schema
->components([
TextEntry::make('employee.id')
->label(__('hr.fields.employee')),
TextEntry::make('type')
->label(__('hr.fields.type'))
->badge(),
TextEntry::make('start_date')
->label(__('hr.fields.start_date'))
->date(),
TextEntry::make('end_date')
->label(__('hr.fields.end_date'))
->date(),
TextEntry::make('return_date')
->label(__('hr.fields.return_date'))
->date()
->placeholder('-'),
TextEntry::make('days')
->label(__('hr.fields.days'))
->numeric(),
TextEntry::make('status')
->label(__('hr.fields.status'))
->badge(),
TextEntry::make('reason')
->label(__('hr.fields.reason'))
->placeholder('-')
->columnSpanFull(),
TextEntry::make('attachment_path')
->label(__('hr.fields.attachment'))
->placeholder('-'),
TextEntry::make('approved_by')
->label(__('hr.fields.approved_by'))
->numeric()
->placeholder('-'),
TextEntry::make('approved_at')
->label(__('hr.fields.approved_at'))
->dateTime()
->placeholder('-'),
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime()
->placeholder('-'),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime()
->placeholder('-'),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime()
->visible(fn (Vacation $record): bool => $record->trashed()),
Section::make(__('hr.sections.basic_info'))
->schema([
TextEntry::make('employee.full_name')
->label(__('hr.fields.employee')),
TextEntry::make('type')
->label(__('hr.fields.type'))
->badge()
->color(fn (VacationType $state): string => $state->color())
->formatStateUsing(fn (VacationType $state): string => $state->label()),
TextEntry::make('status')
->label(__('hr.fields.status'))
->badge()
->color(fn (ApprovalStatus $state): string => $state->color())
->formatStateUsing(fn (ApprovalStatus $state): string => $state->label()),
])
->columns(3),
Section::make(__('hr.sections.dates'))
->schema([
TextEntry::make('start_date')
->label(__('hr.fields.start_date'))
->date('d.m.Y'),
TextEntry::make('end_date')
->label(__('hr.fields.end_date'))
->date('d.m.Y'),
TextEntry::make('return_date')
->label(__('hr.fields.return_date'))
->date('d.m.Y')
->placeholder(''),
TextEntry::make('days')
->label(__('hr.fields.days'))
->suffix(' '.__('hr.messages.days_suffix')),
])
->columns(2),
Section::make(__('hr.sections.approval'))
->schema([
TextEntry::make('reason')
->label(__('hr.fields.reason'))
->placeholder('—')
->columnSpanFull(),
TextEntry::make('attachment_path')
->label(__('hr.fields.attachment'))
->formatStateUsing(fn (?string $state): string => filled($state) ? basename($state) : '—'),
TextEntry::make('approved_by')
->label(__('hr.fields.approved_by'))
->formatStateUsing(fn ($state, Vacation $record): string => $record->approver?->name ?? '—'),
])
->columns(2),
Section::make(__('hr.sections.metadata'))
->schema([
TextEntry::make('approved_at')
->label(__('hr.fields.approved_at'))
->dateTime('d.m.Y H:i')
->placeholder('—'),
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime('d.m.Y H:i')
->placeholder('—'),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime('d.m.Y H:i')
->placeholder('—'),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime('d.m.Y H:i')
->visible(fn (Vacation $record): bool => $record->trashed()),
])
->columns(2),
]);
}
}

View File

@@ -156,6 +156,10 @@ return [
'upcoming_approved_leave' => 'Upcoming Approved Leave',
'other_leave_types' => 'Other Leave Types',
'activity_details' => 'Activity Details',
'basic_info' => 'Basic Information',
'dates' => 'Dates',
'approval' => 'Approval',
'metadata' => 'Metadata',
],
'messages' => [

View File

@@ -156,6 +156,10 @@ return [
'upcoming_approved_leave' => 'Предстоящий одобренный отпуск',
'other_leave_types' => 'Другие типы отпусков',
'activity_details' => 'Детали активности',
'basic_info' => 'Основная информация',
'dates' => 'Даты',
'approval' => 'Утверждение',
'metadata' => 'Метаданные',
],
'messages' => [

View File

@@ -156,6 +156,10 @@ return [
'upcoming_approved_leave' => 'Ýakynlaşýan tassyklanan dynç alyş',
'other_leave_types' => 'Beýleki rugsat görnüşleri',
'activity_details' => 'Işjeňlik jikme-jiklikleri',
'basic_info' => 'Esasy maglumat',
'dates' => 'Seneler',
'approval' => 'Tassyklama',
'metadata' => 'Maglumat',
],
'messages' => [