Refactor Bonus, DisciplinaryReport, Gift, and Explanation schemas to enhance layout and organization. Introduce sections for better categorization of information, improve date picker functionality, and update localization for various fields across multiple languages.

This commit is contained in:
Mekan1206
2026-08-02 22:08:33 +05:00
parent a9f7dc1076
commit 9e623d2d29
10 changed files with 205 additions and 110 deletions

View File

@@ -20,7 +20,8 @@ class BonusForm
DatePicker::make('bonus_date')
->label(__('hr.fields.bonus_date'))
->required()
->default(now()),
->default(now())
->native(false),
Select::make('bonus_type')
->label(__('hr.fields.bonus_type'))
->options(BonusType::class)

View File

@@ -1,9 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\Bonuses\Schemas;
use App\Enums\BonusType;
use App\Models\Bonus;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
class BonusInfolist
@@ -12,33 +16,47 @@ class BonusInfolist
{
return $schema
->components([
TextEntry::make('employee.id')
Section::make(__('hr.sections.basic_info'))
->schema([
TextEntry::make('employee.full_name')
->label(__('hr.fields.employee')),
TextEntry::make('bonus_date')
->label(__('hr.fields.bonus_date'))
->date(),
->date('d.m.Y'),
TextEntry::make('bonus_type')
->label(__('hr.fields.bonus_type'))
->badge(),
->badge()
->color(fn (BonusType $state): string => $state->color())
->formatStateUsing(fn (BonusType $state): string => $state->label()),
])
->columns(3),
Section::make(__('hr.sections.bonus_details'))
->schema([
TextEntry::make('amount')
->label(__('hr.fields.amount'))
->numeric(),
->money('TMT'),
TextEntry::make('reason')
->label(__('hr.fields.reason'))
->placeholder('-')
->placeholder('')
->columnSpanFull(),
])
->columns(2),
Section::make(__('hr.sections.metadata'))
->schema([
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime()
->dateTime('d.m.Y H:i')
->visible(fn (Bonus $record): bool => $record->trashed()),
])
->columns(2),
]);
}
}

View File

@@ -20,7 +20,9 @@ class DisciplinaryReportForm
DatePicker::make('report_date')
->label(__('hr.fields.report_date'))
->required()
->native(false)
->default(now()),
TextInput::make('title')
->label(__('hr.fields.title'))
->required()

View File

@@ -1,10 +1,15 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\DisciplinaryReports\Schemas;
use App\Enums\DisciplinarySeverity;
use App\Models\DisciplinaryReport;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Filament\Infolists\Components\ImageEntry;
class DisciplinaryReportInfolist
{
@@ -12,38 +17,61 @@ class DisciplinaryReportInfolist
{
return $schema
->components([
TextEntry::make('employee.id')
Section::make(__('hr.sections.basic_info'))
->schema([
TextEntry::make('employee.full_name')
->label(__('hr.fields.employee')),
TextEntry::make('report_date')
->label(__('hr.fields.report_date'))
->date(),
TextEntry::make('title')
->label(__('hr.fields.title')),
TextEntry::make('description')
->label(__('hr.fields.description'))
->columnSpanFull(),
->date('d.m.Y'),
TextEntry::make('severity')
->label(__('hr.fields.severity'))
->badge(),
TextEntry::make('attachment_path')
->label(__('hr.fields.attachment'))
->placeholder('-'),
TextEntry::make('created_by')
->label(__('hr.fields.created_by'))
->numeric()
->placeholder('-'),
->badge()
->color(fn (DisciplinarySeverity $state): string => $state->color())
->formatStateUsing(fn (DisciplinarySeverity $state): string => $state->label()),
])
->columns(3),
Section::make(__('hr.sections.metadata'))
->schema([
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime()
->visible(fn (DisciplinaryReport $record): bool => $record->trashed()),
->dateTime('d.m.Y H:i')
->visible(fn(DisciplinaryReport $record): bool => $record->trashed()),
TextEntry::make('created_by')
->label(__('hr.fields.created_by'))
->formatStateUsing(fn($state, DisciplinaryReport $record): string => $record->creator?->name ?? '—'),
])
->columns(2),
Section::make(__('hr.sections.report_details'))
->schema([
TextEntry::make('title')
->label(__('hr.fields.title'))
->weight('bold')
->size('lg')
->hiddenLabel(),
TextEntry::make('description')
->label(__('hr.fields.description'))
->placeholder('—')
->columnSpanFull()
->hiddenLabel(),
ImageEntry::make('attachment_path')
->square()
->size(80)
->label(__('hr.fields.attachment'))
->visible(fn(?string $state): bool => filled($state)),
])
->columns(2),
]);
}
}

View File

@@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\Explanations\Schemas;
use App\Models\Explanation;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
class ExplanationInfolist
@@ -12,31 +15,46 @@ class ExplanationInfolist
{
return $schema
->components([
TextEntry::make('employee.id')
Section::make(__('hr.sections.basic_info'))
->schema([
TextEntry::make('employee.full_name')
->label(__('hr.fields.employee')),
TextEntry::make('explanation_date')
->label(__('hr.fields.explanation_date'))
->date(),
->date('d.m.Y'),
])
->columns(2),
Section::make(__('hr.sections.explanation_details'))
->schema([
TextEntry::make('reason')
->label(__('hr.fields.reason')),
->label(__('hr.fields.reason'))
->placeholder('—')
->columnSpanFull(),
TextEntry::make('description')
->label(__('hr.fields.description'))
->placeholder('—')
->columnSpanFull(),
TextEntry::make('attachment_path')
->label(__('hr.fields.attachment'))
->placeholder('-'),
->formatStateUsing(fn (?string $state): string => filled($state) ? basename($state) : ''),
])
->columns(2),
Section::make(__('hr.sections.metadata'))
->schema([
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime()
->dateTime('d.m.Y H:i')
->visible(fn (Explanation $record): bool => $record->trashed()),
])
->columns(2),
]);
}
}

View File

@@ -18,7 +18,8 @@ class GiftForm
DatePicker::make('gift_date')
->label(__('hr.fields.gift_date'))
->required()
->default(now()),
->default(now())
->native(false),
TextInput::make('gift_name')
->label(__('hr.fields.gift_name'))
->required()

View File

@@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
namespace App\Filament\Resources\Gifts\Schemas;
use App\Models\Gift;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
class GiftInfolist
@@ -12,32 +15,44 @@ class GiftInfolist
{
return $schema
->components([
TextEntry::make('employee.id')
Section::make(__('hr.sections.basic_info'))
->schema([
TextEntry::make('employee.full_name')
->label(__('hr.fields.employee')),
TextEntry::make('gift_date')
->label(__('hr.fields.gift_date'))
->date(),
->date('d.m.Y'),
TextEntry::make('gift_name')
->label(__('hr.fields.gift_name')),
])
->columns(3),
Section::make(__('hr.sections.gift_details'))
->schema([
TextEntry::make('value')
->label(__('hr.fields.value'))
->numeric(),
->money('TMT'),
TextEntry::make('reason')
->label(__('hr.fields.reason'))
->placeholder('-')
->placeholder('')
->columnSpanFull(),
])
->columns(2),
Section::make(__('hr.sections.metadata'))
->schema([
TextEntry::make('created_at')
->label(__('hr.fields.created_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('updated_at')
->label(__('hr.fields.updated_at'))
->dateTime()
->placeholder('-'),
->dateTime('d.m.Y H:i')
->placeholder(''),
TextEntry::make('deleted_at')
->label(__('hr.fields.deleted_at'))
->dateTime()
->dateTime('d.m.Y H:i')
->visible(fn (Gift $record): bool => $record->trashed()),
])
->columns(2),
]);
}
}

View File

@@ -161,6 +161,10 @@ return [
'approval' => 'Approval',
'metadata' => 'Metadata',
'medical_details' => 'Medical Details',
'report_details' => 'Report Details',
'explanation_details' => 'Explanation Details',
'bonus_details' => 'Bonus Details',
'gift_details' => 'Gift Details',
],
'messages' => [

View File

@@ -161,6 +161,10 @@ return [
'approval' => 'Утверждение',
'metadata' => 'Метаданные',
'medical_details' => 'Медицинские данные',
'report_details' => 'Детали отчёта',
'explanation_details' => 'Детали объяснительной',
'bonus_details' => 'Детали премии',
'gift_details' => 'Детали подарка',
],
'messages' => [

View File

@@ -161,6 +161,10 @@ return [
'approval' => 'Tassyklama',
'metadata' => 'Maglumat',
'medical_details' => 'Lukmançylyk maglumatlary',
'report_details' => 'Hasabat jikme-jiklikleri',
'explanation_details' => 'Düşündiriş jikme-jiklikleri',
'bonus_details' => 'Baýrak jikme-jiklikleri',
'gift_details' => 'Sowgat jikme-jiklikleri',
],
'messages' => [