diff --git a/composer.json b/composer.json index 78c53f8..526c3eb 100644 --- a/composer.json +++ b/composer.json @@ -22,12 +22,12 @@ ], "require": { "php": "^8.1", - "filament/forms": "^3.0", + "filament/forms": "^4.0", "spatie/laravel-package-tools": "^1.15.0", "illuminate/contracts": "^10.0|^11.0|^12.0" }, "require-dev": { - "nunomaduro/collision": "^7.9", + "nunomaduro/collision": "^v8.8.0", "orchestra/testbench": "^8.0|^9.0|^10.0", "pestphp/pest": "^2.0|^3.7", "pestphp/pest-plugin-arch": "^2.0|^3.0", diff --git a/src/SelectTree.php b/src/SelectTree.php index 1985283..0217c77 100644 --- a/src/SelectTree.php +++ b/src/SelectTree.php @@ -2,19 +2,19 @@ namespace CodeWithDennis\FilamentSelectTree; +use Filament\Schemas\Components\Contracts\HasAffixActions; +use Filament\Schemas\Components\Concerns\CanBeDisabled; +use Filament\Schemas\Components\Concerns\HasActions; +use Filament\Schemas\Schema; +use Filament\Actions\Action; +use InvalidArgumentException; use Closure; use Exception; -use Filament\Forms\ComponentContainer; -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\Concerns\CanBeDisabled; use Filament\Forms\Components\Concerns\CanBeSearchable; -use Filament\Forms\Components\Concerns\HasActions; use Filament\Forms\Components\Concerns\HasAffixes; use Filament\Forms\Components\Concerns\HasPivotData; use Filament\Forms\Components\Concerns\HasPlaceholder; -use Filament\Forms\Components\Contracts\HasAffixActions; use Filament\Forms\Components\Field; -use Filament\Forms\Form; use Filament\Support\Facades\FilamentIcon; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -130,12 +130,12 @@ protected function setUp(): void } }); - $this->createOptionUsing(static function (SelectTree $component, array $data, Form $form) { + $this->createOptionUsing(static function (SelectTree $component, array $data, Schema $schema) { $record = $component->getRelationship()->getRelated(); $record->fill($data); $record->save(); - $form->model($record)->saveRelationships(); + $schema->model($record)->saveRelationships(); return $component->getCustomKey($record); }); @@ -310,7 +310,7 @@ public function prepend(Closure|array|null $prepend = null): static if (is_array($this->prepend) && isset($this->prepend['name'], $this->prepend['value'])) { $this->prepend['value'] = (string) $this->prepend['value']; } else { - throw new \InvalidArgumentException('The provided prepend value must be an array with "name" and "value" keys.'); + throw new InvalidArgumentException('The provided prepend value must be an array with "name" and "value" keys.'); } return $this; @@ -510,9 +510,9 @@ public function getHiddenOptions(): array return $this->evaluate($this->hiddenOptions); } - public function getCreateOptionActionForm(Form $form): array|Form|null + public function getCreateOptionActionForm(Schema $schema): array|Schema|null { - return $this->evaluate($this->createOptionActionForm, ['form' => $form]); + return $this->evaluate($this->createOptionActionForm, ['form' => $schema]); } public function hasCreateOptionActionFormSchema(): bool @@ -560,19 +560,19 @@ public function getCreateOptionAction(): ?Action } $action = Action::make($this->getCreateOptionActionName()) - ->form(function (SelectTree $component, Form $form): array|Form|null { - return $component->getCreateOptionActionForm($form->model( + ->schema(function (SelectTree $component, Schema $schema): array|Schema|null { + return $component->getCreateOptionActionForm($schema->model( $component->getRelationship() ? $component->getRelationship()->getModel()::class : null, )); }) - ->action(static function (Action $action, array $arguments, SelectTree $component, array $data, ComponentContainer $form) { + ->action(static function (Action $action, array $arguments, SelectTree $component, array $data, Schema $schema) { if (! $component->getCreateOptionUsing()) { throw new Exception("Select field [{$component->getStatePath()}] must have a [createOptionUsing()] closure set."); } $createdOptionKey = $component->evaluate($component->getCreateOptionUsing(), [ 'data' => $data, - 'form' => $form, + 'form' => $schema, ]); $state = $component->getMultiple() @@ -591,7 +591,7 @@ public function getCreateOptionAction(): ?Action $action->callAfter(); - $form->fill(); + $schema->fill(); $action->halt(); }) diff --git a/tests/TestCase.php b/tests/TestCase.php index 6ec15dc..2033829 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -6,15 +6,10 @@ use BladeUI\Icons\BladeIconsServiceProvider; use CodeWithDennis\FilamentSelectTree\FilamentSelectTreeServiceProvider; use Filament\Actions\ActionsServiceProvider; -use Filament\FilamentServiceProvider; use Filament\Forms\FormsServiceProvider; use Filament\Infolists\InfolistsServiceProvider; use Filament\Notifications\NotificationsServiceProvider; -use Filament\SpatieLaravelSettingsPluginServiceProvider; -use Filament\SpatieLaravelTranslatablePluginServiceProvider; use Filament\Support\SupportServiceProvider; -use Filament\Tables\TablesServiceProvider; -use Filament\Widgets\WidgetsServiceProvider; use Illuminate\Database\Eloquent\Factories\Factory; use Livewire\LivewireServiceProvider; use Orchestra\Testbench\TestCase as Orchestra; @@ -38,16 +33,16 @@ protected function getPackageProviders($app) BladeCaptureDirectiveServiceProvider::class, BladeHeroiconsServiceProvider::class, BladeIconsServiceProvider::class, - FilamentServiceProvider::class, +// FilamentServiceProvider::class, FormsServiceProvider::class, InfolistsServiceProvider::class, LivewireServiceProvider::class, NotificationsServiceProvider::class, - SpatieLaravelSettingsPluginServiceProvider::class, - SpatieLaravelTranslatablePluginServiceProvider::class, +// SpatieLaravelSettingsPluginServiceProvider::class, +// SpatieLaravelTranslatablePluginServiceProvider::class, SupportServiceProvider::class, - TablesServiceProvider::class, - WidgetsServiceProvider::class, +// TablesServiceProvider::class, +// WidgetsServiceProvider::class, FilamentSelectTreeServiceProvider::class, ]; }