File: /home/posscale/public_html/printmanager/vendor/filament/actions/src/EditAction.php
<?php
namespace Filament\Actions;
use Closure;
use Filament\Actions\Concerns\CanCustomizeProcess;
use Filament\Actions\Contracts\HasActions;
use Filament\Support\Facades\FilamentIcon;
use Illuminate\Database\Eloquent\Model;
class EditAction extends Action
{
use CanCustomizeProcess;
protected ?Closure $mutateRecordDataUsing = null;
public static function getDefaultName(): ?string
{
return 'edit';
}
protected function setUp(): void
{
parent::setUp();
$this->label(__('filament-actions::edit.single.label'));
$this->modalHeading(fn (): string => __('filament-actions::edit.single.modal.heading', ['label' => $this->getRecordTitle()]));
$this->modalSubmitActionLabel(__('filament-actions::edit.single.modal.actions.save.label'));
$this->successNotificationTitle(__('filament-actions::edit.single.notifications.saved.title'));
$this->groupedIcon(FilamentIcon::resolve('actions::edit-action.grouped') ?? 'heroicon-m-pencil-square');
$this->fillForm(function (HasActions $livewire, Model $record): array {
if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) {
$data = $translatableContentDriver->getRecordAttributesToArray($record);
} else {
$data = $record->attributesToArray();
}
if ($this->mutateRecordDataUsing) {
$data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]);
}
return $data;
});
$this->action(function (): void {
$this->process(function (array $data, HasActions $livewire, Model $record) {
if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) {
$translatableContentDriver->updateRecord($record, $data);
} else {
$record->update($data);
}
});
$this->success();
});
}
public function mutateRecordDataUsing(?Closure $callback): static
{
$this->mutateRecordDataUsing = $callback;
return $this;
}
}