Skip to content

Commit

Permalink
Added livewire v3 support
Browse files Browse the repository at this point in the history
  • Loading branch information
dtvmedia committed Mar 22, 2024
1 parent 9e3ba59 commit 8c6fa58
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 25 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.idea
.phpunit.cache
.phpunit.result.cache
coverage
vendor
clover.xml
Expand Down
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
],
"require": {
"php": "^8.1",
"livewire/livewire": "^2.3"
"livewire/livewire": "^3.0"
},
"require-dev": {
"laravel/legacy-factories": "^1.0.4",
Expand All @@ -38,7 +38,7 @@
}
},
"scripts": {
"test": "vendor/bin/pest",
"test": "XDEBUG_MODE=coverage vendor/bin/pest",
"test-coverage": "XDEBUG_MODE=coverage vendor/bin/pest --coverage --coverage-html coverage"
},
"extra": {
Expand Down
26 changes: 5 additions & 21 deletions src/LivewireCoreServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,50 +13,34 @@ class LivewireCoreServiceProvider extends ServiceProvider

private string $resourcesPath = __DIR__ . DIRECTORY_SEPARATOR . 'resources' . DIRECTORY_SEPARATOR;

public function register()
public function register(): void
{
$this->mergeConfigFrom(__DIR__ . '/config/livewire-core.php', 'livewire-core');
}

public function boot()
public function boot(): void
{
$this->loadViewsFrom($this->resourcesPath . 'views', $this->packageNamespace);

$this->registerBindings();
$this->registerLivewireEvents();
$this->registerVendorPublishes();
$this->registerBladeDirectives();
}

private function registerBindings()
private function registerBindings(): void
{
$this->app->singleton(CspNonce::class, function () {
return new CspNonce();
});
}

private function registerLivewireEvents()
{
Livewire::listen(
'component.mount',
function ($livewireClass, $parameter) {
if (
array_key_exists(SupportsAdditionalViewParameters::class, class_uses_recursive($livewireClass)) &&
array_key_exists('additionalViewParameter', $parameter)
) {
$livewireClass->checkAdditionalViewParameter($parameter[ 'additionalViewParameter' ]);
}
}
);
}

private function registerVendorPublishes()
private function registerVendorPublishes(): void
{
$this->publishes([__DIR__ . '/config/livewire-core.php' => config_path('livewire-core.php')], 'livewire-core:config');
$this->publishes([__DIR__ . '/resources/views' => resource_path('views/vendor/' . $this->packageNamespace)], 'livewire-core:views');
}

private function registerBladeDirectives()
private function registerBladeDirectives(): void
{
Blade::directive('nonce', function () {
return "<?php echo app(\Nodus\Packages\LivewireCore\Services\CspNonce::class)->toHtml() ?>";
Expand Down
8 changes: 8 additions & 0 deletions src/SupportsAdditionalViewParameters.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ public function __isset($property)
return false;
}

/**
* @throws Exception
*/
public function mountSupportsAdditionalViewParameters(): void
{
$this->checkAdditionalViewParameter($this->additionalViewParameter);
}

public function checkAdditionalViewParameter(array $additionalViewParameter): void
{
foreach ($additionalViewParameter as $parameter => $value) {
Expand Down
3 changes: 2 additions & 1 deletion tests/Pest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
|
*/

use Livewire\Features\SupportTesting\Testable;
use Livewire\Testing\TestableLivewire;
use Nodus\Packages\LivewireCore\Tests\TestCase;

Expand Down Expand Up @@ -50,7 +51,7 @@ function callMethod(object $object, string $methodName, ...$args)
return $method->invoke($object, ...$args);
}

function livewire(string $name, array $params = []): TestableLivewire
function livewire(string $name, array $params = []): Testable
{
return \Pest\Livewire\livewire($name, $params);
}
2 changes: 2 additions & 0 deletions tests/Stubs/LivewireTestComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ class LivewireTestComponent extends Component
{
use SupportsAdditionalViewParameters;

public int $testProperty = 1;

public function render(): string
{
return <<<'blade'
Expand Down
2 changes: 1 addition & 1 deletion tests/Unit/SupportsAdditionalViewParametersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
});

it('prevents passing a additional view parameter with a conflicting name', function () {
livewire(LivewireTestComponent::class, ['additionalViewParameter' => ['id' => 2]]);
livewire(LivewireTestComponent::class, ['additionalViewParameter' => ['testProperty' => 2]]);
})->throws(Exception::class);
Empty file modified tests/environment/artisan
100755 → 100644
Empty file.

0 comments on commit 8c6fa58

Please sign in to comment.