components([ Section::make('Projekt Daten') ->label(fn (?Projekte $record): ?string => ($record?->created_at) ? 'Erstellt: '.$record?->created_at->diffForHumans().', GeƤndert: '.$record?->updated_at->diffForHumans() : '') ->collapsed(fn ($operation) => $operation == 'create' ? false : true) ->icon('heroicon-o-rectangle-stack') ->schema([ Tabs::make('Tabs') ->contained(false) ->tabs([ Tab::make('Benennung') ->schema([ TextInput::make('offizieller_name') ->label('Offizieller Name') ->required() ->belowContent([ 'Kann mit "###OFFIZIELLER_NAME###" im Text verwendet werden.', ]), TextInput::make('interner_name') ->label('Interner Name') ->required() ->belowContent([ 'Kann mit "###INTERNER_NAME###" im Text verwendet werden.', ]), TextInput::make('ort')->required()->suffix('am'), DatePicker::make('erstellung')->helperText('Datum am Gutachten')->required(), ])->columns(2), Tab::make('Zuordnung') ->schema([ Select::make('gutachter_id')->relationship(name: 'gutachter', titleAttribute: 'company')->required(), Select::make('auftraggeber_id') ->searchable() ->loadingMessage('Lade Auftraggeber...') ->relationship(name: 'auftraggeber', titleAttribute: 'company') ->required(), Radio::make('status')->options(ProjektStatus::class)->required(), ]), Tab::make('Beschreibung') ->schema([ RichEditor::make('beschreibung') ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript', 'link'], ['alignStart', 'alignCenter', 'alignEnd', 'horizontalRule'], ['bulletList', 'orderedList', 'table'], ['undo', 'redo'], ])->floatingToolbars([ 'paragraph' => [ 'bold', 'italic', 'underline', 'strike', 'subscript', 'superscript', ], 'heading' => [ 'h1', 'h2', 'h3', ], 'table' => [ 'tableAddColumnBefore', 'tableAddColumnAfter', 'tableDeleteColumn', 'tableAddRowBefore', 'tableAddRowAfter', 'tableDeleteRow', 'tableMergeCells', 'tableSplitCell', 'tableToggleHeaderRow', 'tableDelete', ], ]) ->columnSpan(2), ]), ]), ])->columnSpanFull(), ]); } }