components([ TextInput::make('ordnungszahl')->numeric(), TextInput::make('name'), Select::make('textblock_kennung_id') ->label('Textblock Art') ->options(function () { $relatedOptions = TextblockKennung::all()->pluck('name', 'id')->toArray(); return ['0' => 'ohne Textblock'] + $relatedOptions; }) ->live(), RichEditor::make('textblock') ->hidden(fn (Get $get): bool => ! $get('textblock_kennung_id')) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], ]), ])->columns(1); } public function table(Table $table): Table { return $table ->recordTitleAttribute('text') ->columns([ // TextColumn::make('sort'), TextColumn::make('ordnungszahl') ->getStateUsing(fn ($record): string => $record->ordnungszahl == '0' ? '' : number_format($record->ordnungszahl, 2)), IconColumn::make('textblock_kennung_id') ->label('Text') ->alignCenter() ->icon('phosphor-article') ->color(fn (string $state): string => match ($state) { '0' => 'gray', default => 'info', }), TextColumn::make('name') ->description(fn ($record): string => $record->textblock_kennung->name ?? ''), TextColumn::make('seite') ->alignCenter() ->badge() ->color('info') ->getStateUsing(fn ($record): string => $record->seite == '0' ? '...' : $record->seite), ]) ->reorderable('sort') ->filters([ // ]) ->headerActions([ CreateAction::make(), ]) ->recordActions([ EditAction::make()->iconButton()->color('gray') ->extraModalFooterActions([ Action::make('vorlage-sichern') ->label('Textblock als Vorlage sichern') ->schema([ Hidden::make('namecheck')->default(function ($record) { return $record['name']; }), TextInput::make('name')->required() ->label('Name der Vorlage') ->validationMessages([ 'different' => 'Name ist schon in Verwendung bitte verwenden Sie einen eindeutig Namen.', ]) ->different('namecheck') ->default(function ($record) { return $record['name']; }), RichEditor::make('textblock') ->label('Textblock Vorlage') ->default(function ($record) { return $record['textblock']; }) // ->default($this->ownerRecord->textblock) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], ]), ]) ->icon('phosphor-floppy-disk') ->tooltip('Ein personalisierter Textblock kann als neue Vorlage gespeichert werden.') ->hidden(fn ($record): bool => ! $record['textblock_kennung_id']) ->color('info') ->action(function (array $mountedActions, $data) { $record = $mountedActions[0]->getRawData(); dd($record['textblock']); KontoTextblock::updateOrCreate( [ 'konto_id' => auth()->user()->konto_id, 'name' => $data['name'], 'textblock_kennung_id' => $record['textblock_kennung_id'], ], [ 'textblock' => $record['textblock'], ]); }), Action::make('vorlage-importieren') ->icon('phosphor-article') ->tooltip('Ein veränderter Textblock kann als persönliche Vorlage gespeichert werden.') ->hidden(fn ($record): bool => ! $record['textblock_kennung_id']) ->color('info') ->requiresConfirmation() ->action(function (array $mountedActions) { dd($mountedActions[0]->getRawData()); }), ]), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }