Files
ntspi-app/app/Filament/Components/Forms/ItemForm/Blocks/PersonBlock.php
T
F4ilji 2997558a50 refactor: move ByteConverter from Helpers to Services namespace
- Move ByteConverter class to App\Ship\Services
- Update all imports across Filament form blocks
- Update ByteConverterServiceProvider
- Add INTEGRATION_CREDENTIAL_PREFIX to CacheKeys enum
2026-07-02 00:29:29 +05:00

62 lines
2.2 KiB
PHP
Executable File

<?php
namespace App\Filament\Components\Forms\ItemForm\Blocks;
use App\Filament\Components\Forms\ItemForm\Blocks\BlockSchema;
use App\Ship\Services\ByteConverter;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
class PersonBlock implements BlockSchema
{
public static function schema(): array
{
return [
TextInput::make('name')
->label('Имя персоны')
->placeholder('Введите имя')
->required()
->maxLength(255)
->helperText('Полное имя персоны'),
FileUpload::make('photo')
->label('Фотография')
->image()
->optimize('webp')
->resize(50)
->disk('public')
->directory('images')
->imageEditor()
->downloadable()
->openable(),
Repeater::make('info')
->label('Дополнительная информация')
->helperText('Добавьте характеристики персоны')
->schema([
TextInput::make('column')
->label('Название характеристики')
->placeholder('Например: Должность')
->required()
->maxLength(255),
Textarea::make('content')
->label('Значение')
->placeholder('Например: Главный инженер')
->required()
->maxLength(1000)
->columnSpanFull(),
])
->minItems(1)
->grid(2)
->collapsible()
->cloneable()
->itemLabel(fn (array $state): ?string => $state['column'] ?? null),
];
}
}