From 48778b3f5cbec8f632e5c79a2b2fd4dd18adab30 Mon Sep 17 00:00:00 2001 From: Alex Thomassen Date: Fri, 24 Nov 2023 14:56:12 +0000 Subject: [PATCH] Add livewire, add pagination --- .phpstorm.meta.php | 198 ++++++ _ide_helper.php | 567 ++++++++++++++++++ app/Http/Controllers/DashboardController.php | 10 +- app/Http/Requests/ChannelActionsRequest.php | 29 + app/Livewire/Actions/Logout.php | 20 + app/Providers/VoltServiceProvider.php | 28 + composer.json | 2 + composer.lock | 148 ++++- config/app.php | 1 + .../views/components/action-message.blade.php | 10 + resources/views/dashboard.blade.php | 17 + resources/views/dashboard/channel.blade.php | 10 +- resources/views/layouts/app.blade.php | 24 +- resources/views/layouts/guest.blade.php | 2 +- resources/views/livewire/.gitkeep | 0 .../livewire/layout/navigation.blade.php | 108 ++++ resources/views/livewire/pages/.gitkeep | 0 .../livewire/welcome/navigation.blade.php | 11 + .../vendor/pagination/bootstrap-4.blade.php | 46 ++ .../vendor/pagination/bootstrap-5.blade.php | 88 +++ .../views/vendor/pagination/default.blade.php | 46 ++ .../vendor/pagination/semantic-ui.blade.php | 36 ++ .../pagination/simple-bootstrap-4.blade.php | 27 + .../pagination/simple-bootstrap-5.blade.php | 29 + .../pagination/simple-default.blade.php | 19 + .../pagination/simple-tailwind.blade.php | 25 + .../vendor/pagination/tailwind.blade.php | 106 ++++ resources/views/welcome.blade.php | 26 +- routes/web.php | 1 - tests/Feature/Auth/AuthenticationTest.php | 56 +- tests/Feature/Auth/EmailVerificationTest.php | 4 +- .../Feature/Auth/PasswordConfirmationTest.php | 32 +- tests/Feature/Auth/PasswordResetTest.php | 37 +- tests/Feature/Auth/PasswordUpdateTest.php | 43 +- tests/Feature/Auth/RegistrationTest.php | 21 +- tests/Feature/ProfileTest.php | 78 +-- 36 files changed, 1750 insertions(+), 155 deletions(-) create mode 100644 app/Http/Requests/ChannelActionsRequest.php create mode 100644 app/Livewire/Actions/Logout.php create mode 100644 app/Providers/VoltServiceProvider.php create mode 100644 resources/views/components/action-message.blade.php create mode 100644 resources/views/dashboard.blade.php create mode 100644 resources/views/livewire/.gitkeep create mode 100644 resources/views/livewire/layout/navigation.blade.php create mode 100644 resources/views/livewire/pages/.gitkeep create mode 100644 resources/views/livewire/welcome/navigation.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-5.blade.php create mode 100644 resources/views/vendor/pagination/default.blade.php create mode 100644 resources/views/vendor/pagination/semantic-ui.blade.php create mode 100644 resources/views/vendor/pagination/simple-bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/simple-bootstrap-5.blade.php create mode 100644 resources/views/vendor/pagination/simple-default.blade.php create mode 100644 resources/views/vendor/pagination/simple-tailwind.blade.php create mode 100644 resources/views/vendor/pagination/tailwind.blade.php diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 53026c8..3b10422 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -141,6 +141,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -197,6 +214,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -340,6 +358,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -396,6 +431,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -539,6 +575,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -595,6 +648,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -738,6 +792,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -794,6 +865,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -937,6 +1009,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -993,6 +1082,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -1136,6 +1226,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -1192,6 +1299,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -1335,6 +1443,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -1391,6 +1516,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -1534,6 +1660,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -1590,6 +1733,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -1733,6 +1877,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -1789,6 +1950,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -1932,6 +2094,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -1988,6 +2167,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, @@ -2131,6 +2311,23 @@ 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, 'Laravel\Socialite\Contracts\Factory' => \Laravel\Socialite\SocialiteManager::class, + 'Livewire\EventBus' => \Livewire\EventBus::class, + 'Livewire\LivewireManager' => \Livewire\LivewireManager::class, + 'Livewire\Mechanisms\ComponentRegistry' => \Livewire\Mechanisms\ComponentRegistry::class, + 'Livewire\Mechanisms\DataStore' => \Livewire\Mechanisms\DataStore::class, + 'Livewire\Mechanisms\ExtendBlade\ExtendBlade' => \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, + 'Livewire\Mechanisms\FrontendAssets\FrontendAssets' => \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, + 'Livewire\Mechanisms\HandleComponents\HandleComponents' => \Livewire\Mechanisms\HandleComponents\HandleComponents::class, + 'Livewire\Mechanisms\HandleRequests\HandleRequests' => \Livewire\Mechanisms\HandleRequests\HandleRequests::class, + 'Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware' => \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, + 'Livewire\Mechanisms\RenderComponent' => \Livewire\Mechanisms\RenderComponent::class, + 'Livewire\Volt\ComponentFactory' => \Livewire\Volt\ComponentFactory::class, + 'Livewire\Volt\ComponentResolver' => \Livewire\Volt\ComponentResolver::class, + 'Livewire\Volt\LivewireManager' => \Livewire\Volt\LivewireManager::class, + 'Livewire\Volt\MountedDirectories' => \Livewire\Volt\MountedDirectories::class, + 'Livewire\Volt\Precompilers\ExtractFragments' => \Livewire\Volt\Precompilers\ExtractFragments::class, + 'Livewire\Volt\Precompilers\ExtractTemplate' => \Livewire\Volt\Precompilers\ExtractTemplate::class, + 'Livewire\Volt\VoltManager' => \Livewire\Volt\VoltManager::class, 'NunoMaduro\Collision\Provider' => \NunoMaduro\Collision\Provider::class, 'SocialiteProviders\Manager\Contracts\Helpers\ConfigRetrieverInterface' => \SocialiteProviders\Manager\Helpers\ConfigRetriever::class, 'Spatie\FlareClient\Flare' => \Spatie\FlareClient\Flare::class, @@ -2187,6 +2384,7 @@ 'queue.worker' => \Illuminate\Queue\Worker::class, 'redirect' => \Illuminate\Routing\Redirector::class, 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PredisConnection::class, 'router' => \Illuminate\Routing\Router::class, 'session' => \Illuminate\Session\SessionManager::class, 'session.store' => \Illuminate\Session\Store::class, diff --git a/_ide_helper.php b/_ide_helper.php index af96fd5..4f2e37f 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -18603,6 +18603,408 @@ public static function getContainer() } +} + + namespace Livewire { + /** + * + * + * @see \Livewire\LivewireManager + */ + class Livewire { + /** + * {@inheritDoc} + * + * @static + */ + public static function mount($name, $params = [], $key = null) + { + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->mount($name, $params, $key); + } + /** + * {@inheritDoc} + * + * @static + */ + public static function update($snapshot, $diff, $calls) + { + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->update($snapshot, $diff, $calls); + } + /** + * + * + * @static + */ + public static function setProvider($provider) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->setProvider($provider); + } + /** + * + * + * @static + */ + public static function provide($callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->provide($callback); + } + /** + * + * + * @static + */ + public static function component($name, $class = null) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->component($name, $class); + } + /** + * + * + * @static + */ + public static function componentHook($hook) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->componentHook($hook); + } + /** + * + * + * @static + */ + public static function propertySynthesizer($synth) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->propertySynthesizer($synth); + } + /** + * + * + * @static + */ + public static function directive($name, $callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->directive($name, $callback); + } + /** + * + * + * @static + */ + public static function precompiler($callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->precompiler($callback); + } + /** + * + * + * @static + */ + public static function new($name, $id = null) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->new($name, $id); + } + /** + * + * + * @static + */ + public static function isDiscoverable($componentNameOrClass) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->isDiscoverable($componentNameOrClass); + } + /** + * + * + * @static + */ + public static function resolveMissingComponent($resolver) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->resolveMissingComponent($resolver); + } + /** + * + * + * @static + */ + public static function snapshot($component) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->snapshot($component); + } + /** + * + * + * @static + */ + public static function fromSnapshot($snapshot) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->fromSnapshot($snapshot); + } + /** + * + * + * @static + */ + public static function listen($eventName, $callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->listen($eventName, $callback); + } + /** + * + * + * @static + */ + public static function current() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->current(); + } + /** + * + * + * @static + */ + public static function updateProperty($component, $path, $value) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->updateProperty($component, $path, $value); + } + /** + * + * + * @static + */ + public static function isLivewireRequest() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->isLivewireRequest(); + } + /** + * + * + * @static + */ + public static function componentHasBeenRendered() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->componentHasBeenRendered(); + } + /** + * + * + * @static + */ + public static function forceAssetInjection() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->forceAssetInjection(); + } + /** + * + * + * @static + */ + public static function setUpdateRoute($callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->setUpdateRoute($callback); + } + /** + * + * + * @static + */ + public static function getUpdateUri() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->getUpdateUri(); + } + /** + * + * + * @static + */ + public static function setScriptRoute($callback) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->setScriptRoute($callback); + } + /** + * + * + * @static + */ + public static function useScriptTagAttributes($attributes) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->useScriptTagAttributes($attributes); + } + /** + * + * + * @static + */ + public static function withUrlParams($params) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->withUrlParams($params); + } + /** + * + * + * @static + */ + public static function withQueryParams($params) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->withQueryParams($params); + } + /** + * + * + * @static + */ + public static function withCookie($name, $value) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->withCookie($name, $value); + } + /** + * + * + * @static + */ + public static function withCookies($cookies) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->withCookies($cookies); + } + /** + * + * + * @static + */ + public static function test($name, $params = []) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->test($name, $params); + } + /** + * + * + * @static + */ + public static function visit($name) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->visit($name); + } + /** + * + * + * @static + */ + public static function actingAs($user, $driver = null) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->actingAs($user, $driver); + } + /** + * + * + * @static + */ + public static function isRunningServerless() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->isRunningServerless(); + } + /** + * + * + * @static + */ + public static function addPersistentMiddleware($middleware) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->addPersistentMiddleware($middleware); + } + /** + * + * + * @static + */ + public static function setPersistentMiddleware($middleware) + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->setPersistentMiddleware($middleware); + } + /** + * + * + * @static + */ + public static function getPersistentMiddleware() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->getPersistentMiddleware(); + } + /** + * + * + * @static + */ + public static function flushState() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->flushState(); + } + /** + * + * + * @static + */ + public static function originalUrl() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->originalUrl(); + } + /** + * + * + * @static + */ + public static function originalPath() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->originalPath(); + } + /** + * + * + * @static + */ + public static function originalMethod() + { //Method inherited from \Livewire\LivewireManager + /** @var \Livewire\Volt\LivewireManager $instance */ + return $instance->originalMethod(); + } + + } + } namespace Spatie\LaravelIgnition\Facades { @@ -19081,6 +19483,170 @@ public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolu } +} + + namespace Illuminate\Routing { + /** + * + * + */ + class Route { + /** + * + * + * @see \Livewire\Features\SupportLazyLoading\SupportLazyLoading::registerRouteMacro() + * @param mixed $enabled + * @static + */ + public static function lazy($enabled = true) + { + return \Illuminate\Routing\Route::lazy($enabled); + } + + } + +} + + namespace Illuminate\View { + /** + * + * + */ + class ComponentAttributeBag { + /** + * + * + * @see \Livewire\Features\SupportBladeAttributes\SupportBladeAttributes::provide() + * @param mixed $name + * @static + */ + public static function wire($name) + { + return \Illuminate\View\ComponentAttributeBag::wire($name); + } + + } + /** + * + * + */ + class View { + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $data + * @static + */ + public static function layoutData($data = []) + { + return \Illuminate\View\View::layoutData($data); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $section + * @static + */ + public static function section($section) + { + return \Illuminate\View\View::section($section); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $title + * @static + */ + public static function title($title) + { + return \Illuminate\View\View::title($title); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $slot + * @static + */ + public static function slot($slot) + { + return \Illuminate\View\View::slot($slot); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $view + * @param mixed $params + * @static + */ + public static function extends($view, $params = []) + { + return \Illuminate\View\View::extends($view, $params); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param mixed $view + * @param mixed $params + * @static + */ + public static function layout($view, $params = []) + { + return \Illuminate\View\View::layout($view, $params); + } + /** + * + * + * @see \Livewire\Features\SupportPageComponents\SupportPageComponents::registerLayoutViewMacros() + * @param callable $callback + * @static + */ + public static function response($callback) + { + return \Illuminate\View\View::response($callback); + } + + } + +} + + namespace Illuminate\Testing { + /** + * + * + * @mixin \Illuminate\Http\Response + */ + class TestResponse { + /** + * + * + * @see \Livewire\Volt\VoltServiceProvider::registerTestingMacros() + * @param mixed $component + * @static + */ + public static function assertSeeVolt($component) + { + return \Illuminate\Testing\TestResponse::assertSeeVolt($component); + } + /** + * + * + * @see \Livewire\Volt\VoltServiceProvider::registerTestingMacros() + * @param mixed $component + * @static + */ + public static function assertDontSeeVolt($component) + { + return \Illuminate\Testing\TestResponse::assertDontSeeVolt($component); + } + + } + } @@ -23043,6 +23609,7 @@ class Validator extends \Illuminate\Support\Facades\Validator {} class View extends \Illuminate\Support\Facades\View {} class Vite extends \Illuminate\Support\Facades\Vite {} class Socialite extends \Laravel\Socialite\Facades\Socialite {} + class Livewire extends \Livewire\Livewire {} class Flare extends \Spatie\LaravelIgnition\Facades\Flare {} } diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 2791e21..22cb886 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -4,7 +4,7 @@ use Illuminate\Http\Request; use App\Models\Trace\Channel; -use Illuminate\Support\Facades\Gate; +use App\Http\Requests\ChannelActionsRequest; class DashboardController extends Controller { @@ -18,15 +18,13 @@ public function index(Request $request) ]); } - public function channel(Channel $channel) + public function channel(ChannelActionsRequest $request, Channel $channel) { - if (!Gate::allows('access-channel', $channel)) { - abort(404); - } + $limit = $request->input('limit', 25); return view('dashboard.channel', [ 'channel' => $channel, - 'actions' => $channel->actions()->orderBy('timestamp', 'desc')->paginate(100), + 'actions' => $channel->actions()->orderBy('timestamp', 'desc')->paginate($limit), ]); } } diff --git a/app/Http/Requests/ChannelActionsRequest.php b/app/Http/Requests/ChannelActionsRequest.php new file mode 100644 index 0000000..f1f12b1 --- /dev/null +++ b/app/Http/Requests/ChannelActionsRequest.php @@ -0,0 +1,29 @@ +route('channel')); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'limit' => 'sometimes|integer|min:1|max:100', + ]; + } +} diff --git a/app/Livewire/Actions/Logout.php b/app/Livewire/Actions/Logout.php new file mode 100644 index 0000000..3ef481d --- /dev/null +++ b/app/Livewire/Actions/Logout.php @@ -0,0 +1,20 @@ +logout(); + + Session::invalidate(); + Session::regenerateToken(); + } +} diff --git a/app/Providers/VoltServiceProvider.php b/app/Providers/VoltServiceProvider.php new file mode 100644 index 0000000..a68c1e1 --- /dev/null +++ b/app/Providers/VoltServiceProvider.php @@ -0,0 +1,28 @@ +toArray(), diff --git a/resources/views/components/action-message.blade.php b/resources/views/components/action-message.blade.php new file mode 100644 index 0000000..46ac232 --- /dev/null +++ b/resources/views/components/action-message.blade.php @@ -0,0 +1,10 @@ +@props(['on']) + +
merge(['class' => 'text-sm text-gray-600 dark:text-gray-400']) }}> + {{ $slot->isEmpty() ? 'Saved.' : $slot }} +
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php new file mode 100644 index 0000000..4024c64 --- /dev/null +++ b/resources/views/dashboard.blade.php @@ -0,0 +1,17 @@ + + +

+ {{ __('Dashboard') }} +

+
+ +
+
+
+
+ {{ __("You're logged in!") }} +
+
+
+
+
diff --git a/resources/views/dashboard/channel.blade.php b/resources/views/dashboard/channel.blade.php index 768c079..d09371a 100644 --- a/resources/views/dashboard/channel.blade.php +++ b/resources/views/dashboard/channel.blade.php @@ -10,7 +10,7 @@

- {{ $channel->username() }} + {{ $channel->username() }}

@@ -32,6 +32,14 @@ @endforeach + + + + + +
+ {{ $actions->links() }} +
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index c3038e3..5b75c8f 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -16,7 +16,7 @@
- @include('layouts.navigation') + @if (isset($header)) @@ -27,28 +27,6 @@ @endif -
-
-
-
-

This is the initial implementation of this project. A few different things that are planned:

- -
    -
  • Channels that are tracked where you have moderator access will be automatically retrieved from Twitch's API. At the moment you have to be manually added to the database.
  • -
  • Different filtering options: Type of action (timeout, raid etc.), moderator (whodunit), user/viewer (next point).
  • -
  • See related moderation actions, for example if a specific viewer has been timed out or banned multiple times.
  • -
  • Searching by text.
  • -
  • Linking any affected viewer's to their Twitch viewer card.
  • -
  • Pagination, currently you can only see the latest 100 moderator actions.
  • -
  • Automatic conversion to local time. Currently it's displayed in UTC.
  • -
  • Ability to see a viewer's chat messages at the time of action, alongside messages before/after to see context.
  • -
  • ... and probably more I'll figure out as I go along.
  • -
-
-
-
-
-
{{ $slot }} diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 4b369b6..eaa6065 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -17,7 +17,7 @@
diff --git a/resources/views/livewire/.gitkeep b/resources/views/livewire/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/livewire/layout/navigation.blade.php b/resources/views/livewire/layout/navigation.blade.php new file mode 100644 index 0000000..36a92e9 --- /dev/null +++ b/resources/views/livewire/layout/navigation.blade.php @@ -0,0 +1,108 @@ +redirect('/', navigate: true); + } +}; ?> + + diff --git a/resources/views/livewire/pages/.gitkeep b/resources/views/livewire/pages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/livewire/welcome/navigation.blade.php b/resources/views/livewire/welcome/navigation.blade.php new file mode 100644 index 0000000..f5c4ecc --- /dev/null +++ b/resources/views/livewire/welcome/navigation.blade.php @@ -0,0 +1,11 @@ +
+ @auth + Dashboard + @else + Log in + + @if (Route::has('register')) + Register + @endif + @endauth +
diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php new file mode 100644 index 0000000..63c6f56 --- /dev/null +++ b/resources/views/vendor/pagination/bootstrap-4.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/bootstrap-5.blade.php b/resources/views/vendor/pagination/bootstrap-5.blade.php new file mode 100644 index 0000000..a1795a4 --- /dev/null +++ b/resources/views/vendor/pagination/bootstrap-5.blade.php @@ -0,0 +1,88 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php new file mode 100644 index 0000000..0db70b5 --- /dev/null +++ b/resources/views/vendor/pagination/default.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php new file mode 100644 index 0000000..ef0dbb1 --- /dev/null +++ b/resources/views/vendor/pagination/semantic-ui.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php new file mode 100644 index 0000000..4bb4917 --- /dev/null +++ b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php @@ -0,0 +1,27 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-bootstrap-5.blade.php b/resources/views/vendor/pagination/simple-bootstrap-5.blade.php new file mode 100644 index 0000000..a89005e --- /dev/null +++ b/resources/views/vendor/pagination/simple-bootstrap-5.blade.php @@ -0,0 +1,29 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php new file mode 100644 index 0000000..36bdbc1 --- /dev/null +++ b/resources/views/vendor/pagination/simple-default.blade.php @@ -0,0 +1,19 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/simple-tailwind.blade.php b/resources/views/vendor/pagination/simple-tailwind.blade.php new file mode 100644 index 0000000..2d7908d --- /dev/null +++ b/resources/views/vendor/pagination/simple-tailwind.blade.php @@ -0,0 +1,25 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/vendor/pagination/tailwind.blade.php b/resources/views/vendor/pagination/tailwind.blade.php new file mode 100644 index 0000000..a81609d --- /dev/null +++ b/resources/views/vendor/pagination/tailwind.blade.php @@ -0,0 +1,106 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index d23b99e..ea3c336 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -8,27 +8,15 @@ - + - - + + @vite(['resources/css/app.css', 'resources/js/app.js'])
@if (Route::has('login')) -
- @auth - Dashboard - @else - Log in - - @if (Route::has('register')) - Register - @endif - @endauth -
+ @endif
@@ -119,10 +107,10 @@
-
+ -
+
Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
diff --git a/routes/web.php b/routes/web.php index f16b272..7405ce5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,5 @@ get('/login'); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.login') + ->assertOk(); } public function test_users_can_authenticate_using_the_login_screen(): void { $user = User::factory()->create(); - $response = $this->post('/login', [ - 'email' => $user->email, - 'password' => 'password', - ]); + $component = Volt::test('pages.auth.login') + ->set('form.email', $user->email) + ->set('form.password', 'password'); + + $component->call('login'); + + $component + ->assertHasNoErrors() + ->assertRedirect(RouteServiceProvider::HOME); $this->assertAuthenticated(); - $response->assertRedirect(RouteServiceProvider::HOME); } public function test_users_can_not_authenticate_with_invalid_password(): void { $user = User::factory()->create(); - $this->post('/login', [ - 'email' => $user->email, - 'password' => 'wrong-password', - ]); + $component = Volt::test('pages.auth.login') + ->set('form.email', $user->email) + ->set('form.password', 'wrong-password'); + + $component->call('login'); + + $component + ->assertHasErrors() + ->assertNoRedirect(); $this->assertGuest(); } + public function test_navigation_menu_can_be_rendered(): void + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $response = $this->get('/dashboard'); + + $response + ->assertSeeVolt('layout.navigation') + ->assertOk(); + } + public function test_users_can_logout(): void { $user = User::factory()->create(); - $response = $this->actingAs($user)->post('/logout'); + $this->actingAs($user); + + $component = Volt::test('layout.navigation'); + + $component->call('logout'); + + $component + ->assertHasNoErrors() + ->assertRedirect('/'); $this->assertGuest(); - $response->assertRedirect('/'); } } diff --git a/tests/Feature/Auth/EmailVerificationTest.php b/tests/Feature/Auth/EmailVerificationTest.php index ba19d9c..cfd4d6a 100644 --- a/tests/Feature/Auth/EmailVerificationTest.php +++ b/tests/Feature/Auth/EmailVerificationTest.php @@ -22,7 +22,9 @@ public function test_email_verification_screen_can_be_rendered(): void $response = $this->actingAs($user)->get('/verify-email'); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.verify-email') + ->assertStatus(200); } public function test_email_can_be_verified(): void diff --git a/tests/Feature/Auth/PasswordConfirmationTest.php b/tests/Feature/Auth/PasswordConfirmationTest.php index ff85721..e91c6bb 100644 --- a/tests/Feature/Auth/PasswordConfirmationTest.php +++ b/tests/Feature/Auth/PasswordConfirmationTest.php @@ -4,6 +4,7 @@ use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; +use Livewire\Volt\Volt; use Tests\TestCase; class PasswordConfirmationTest extends TestCase @@ -16,29 +17,40 @@ public function test_confirm_password_screen_can_be_rendered(): void $response = $this->actingAs($user)->get('/confirm-password'); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.confirm-password') + ->assertStatus(200); } public function test_password_can_be_confirmed(): void { $user = User::factory()->create(); - $response = $this->actingAs($user)->post('/confirm-password', [ - 'password' => 'password', - ]); + $this->actingAs($user); - $response->assertRedirect(); - $response->assertSessionHasNoErrors(); + $component = Volt::test('pages.auth.confirm-password') + ->set('password', 'password'); + + $component->call('confirmPassword'); + + $component + ->assertRedirect('/dashboard') + ->assertHasNoErrors(); } public function test_password_is_not_confirmed_with_invalid_password(): void { $user = User::factory()->create(); - $response = $this->actingAs($user)->post('/confirm-password', [ - 'password' => 'wrong-password', - ]); + $this->actingAs($user); - $response->assertSessionHasErrors(); + $component = Volt::test('pages.auth.confirm-password') + ->set('password', 'wrong-password'); + + $component->call('confirmPassword'); + + $component + ->assertNoRedirect() + ->assertHasErrors('password'); } } diff --git a/tests/Feature/Auth/PasswordResetTest.php b/tests/Feature/Auth/PasswordResetTest.php index 4a26065..f5bc765 100644 --- a/tests/Feature/Auth/PasswordResetTest.php +++ b/tests/Feature/Auth/PasswordResetTest.php @@ -6,6 +6,7 @@ use Illuminate\Auth\Notifications\ResetPassword; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Notification; +use Livewire\Volt\Volt; use Tests\TestCase; class PasswordResetTest extends TestCase @@ -16,7 +17,9 @@ public function test_reset_password_link_screen_can_be_rendered(): void { $response = $this->get('/forgot-password'); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.forgot-password') + ->assertStatus(200); } public function test_reset_password_link_can_be_requested(): void @@ -25,7 +28,9 @@ public function test_reset_password_link_can_be_requested(): void $user = User::factory()->create(); - $this->post('/forgot-password', ['email' => $user->email]); + Volt::test('pages.auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); Notification::assertSentTo($user, ResetPassword::class); } @@ -36,12 +41,16 @@ public function test_reset_password_screen_can_be_rendered(): void $user = User::factory()->create(); - $this->post('/forgot-password', ['email' => $user->email]); + Volt::test('pages.auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); Notification::assertSentTo($user, ResetPassword::class, function ($notification) { $response = $this->get('/reset-password/'.$notification->token); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.reset-password') + ->assertStatus(200); return true; }); @@ -53,17 +62,21 @@ public function test_password_can_be_reset_with_valid_token(): void $user = User::factory()->create(); - $this->post('/forgot-password', ['email' => $user->email]); + Volt::test('pages.auth.forgot-password') + ->set('email', $user->email) + ->call('sendPasswordResetLink'); Notification::assertSentTo($user, ResetPassword::class, function ($notification) use ($user) { - $response = $this->post('/reset-password', [ - 'token' => $notification->token, - 'email' => $user->email, - 'password' => 'password', - 'password_confirmation' => 'password', - ]); + $component = Volt::test('pages.auth.reset-password', ['token' => $notification->token]) + ->set('email', $user->email) + ->set('password', 'password') + ->set('password_confirmation', 'password'); - $response->assertSessionHasNoErrors(); + $component->call('resetPassword'); + + $component + ->assertRedirect('/login') + ->assertHasNoErrors(); return true; }); diff --git a/tests/Feature/Auth/PasswordUpdateTest.php b/tests/Feature/Auth/PasswordUpdateTest.php index ca28c6c..d24c295 100644 --- a/tests/Feature/Auth/PasswordUpdateTest.php +++ b/tests/Feature/Auth/PasswordUpdateTest.php @@ -5,6 +5,7 @@ use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Hash; +use Livewire\Volt\Volt; use Tests\TestCase; class PasswordUpdateTest extends TestCase @@ -15,18 +16,17 @@ public function test_password_can_be_updated(): void { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->from('/profile') - ->put('/password', [ - 'current_password' => 'password', - 'password' => 'new-password', - 'password_confirmation' => 'new-password', - ]); + $this->actingAs($user); - $response - ->assertSessionHasNoErrors() - ->assertRedirect('/profile'); + $component = Volt::test('profile.update-password-form') + ->set('current_password', 'password') + ->set('password', 'new-password') + ->set('password_confirmation', 'new-password') + ->call('updatePassword'); + + $component + ->assertHasNoErrors() + ->assertNoRedirect(); $this->assertTrue(Hash::check('new-password', $user->refresh()->password)); } @@ -35,17 +35,16 @@ public function test_correct_password_must_be_provided_to_update_password(): voi { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->from('/profile') - ->put('/password', [ - 'current_password' => 'wrong-password', - 'password' => 'new-password', - 'password_confirmation' => 'new-password', - ]); + $this->actingAs($user); - $response - ->assertSessionHasErrorsIn('updatePassword', 'current_password') - ->assertRedirect('/profile'); + $component = Volt::test('profile.update-password-form') + ->set('current_password', 'wrong-password') + ->set('password', 'new-password') + ->set('password_confirmation', 'new-password') + ->call('updatePassword'); + + $component + ->assertHasErrors(['current_password']) + ->assertNoRedirect(); } } diff --git a/tests/Feature/Auth/RegistrationTest.php b/tests/Feature/Auth/RegistrationTest.php index 30829b1..91ade8c 100644 --- a/tests/Feature/Auth/RegistrationTest.php +++ b/tests/Feature/Auth/RegistrationTest.php @@ -4,6 +4,7 @@ use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Testing\RefreshDatabase; +use Livewire\Volt\Volt; use Tests\TestCase; class RegistrationTest extends TestCase @@ -14,19 +15,23 @@ public function test_registration_screen_can_be_rendered(): void { $response = $this->get('/register'); - $response->assertStatus(200); + $response + ->assertSeeVolt('pages.auth.register') + ->assertOk(); } public function test_new_users_can_register(): void { - $response = $this->post('/register', [ - 'name' => 'Test User', - 'email' => 'test@example.com', - 'password' => 'password', - 'password_confirmation' => 'password', - ]); + $component = Volt::test('pages.auth.register') + ->set('name', 'Test User') + ->set('email', 'test@example.com') + ->set('password', 'password') + ->set('password_confirmation', 'password'); + + $component->call('register'); + + $component->assertRedirect(RouteServiceProvider::HOME); $this->assertAuthenticated(); - $response->assertRedirect(RouteServiceProvider::HOME); } } diff --git a/tests/Feature/ProfileTest.php b/tests/Feature/ProfileTest.php index 252fdcc..668fa61 100644 --- a/tests/Feature/ProfileTest.php +++ b/tests/Feature/ProfileTest.php @@ -4,6 +4,7 @@ use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; +use Livewire\Volt\Volt; use Tests\TestCase; class ProfileTest extends TestCase @@ -14,27 +15,29 @@ public function test_profile_page_is_displayed(): void { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->get('/profile'); + $response = $this->actingAs($user)->get('/profile'); - $response->assertOk(); + $response + ->assertSeeVolt('profile.update-profile-information-form') + ->assertSeeVolt('profile.update-password-form') + ->assertSeeVolt('profile.delete-user-form') + ->assertOk(); } public function test_profile_information_can_be_updated(): void { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->patch('/profile', [ - 'name' => 'Test User', - 'email' => 'test@example.com', - ]); + $this->actingAs($user); - $response - ->assertSessionHasNoErrors() - ->assertRedirect('/profile'); + $component = Volt::test('profile.update-profile-information-form') + ->set('name', 'Test User') + ->set('email', 'test@example.com') + ->call('updateProfileInformation'); + + $component + ->assertHasNoErrors() + ->assertNoRedirect(); $user->refresh(); @@ -47,16 +50,16 @@ public function test_email_verification_status_is_unchanged_when_the_email_addre { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->patch('/profile', [ - 'name' => 'Test User', - 'email' => $user->email, - ]); + $this->actingAs($user); - $response - ->assertSessionHasNoErrors() - ->assertRedirect('/profile'); + $component = Volt::test('profile.update-profile-information-form') + ->set('name', 'Test User') + ->set('email', $user->email) + ->call('updateProfileInformation'); + + $component + ->assertHasNoErrors() + ->assertNoRedirect(); $this->assertNotNull($user->refresh()->email_verified_at); } @@ -65,14 +68,14 @@ public function test_user_can_delete_their_account(): void { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->delete('/profile', [ - 'password' => 'password', - ]); + $this->actingAs($user); - $response - ->assertSessionHasNoErrors() + $component = Volt::test('profile.delete-user-form') + ->set('password', 'password') + ->call('deleteUser'); + + $component + ->assertHasNoErrors() ->assertRedirect('/'); $this->assertGuest(); @@ -83,16 +86,15 @@ public function test_correct_password_must_be_provided_to_delete_account(): void { $user = User::factory()->create(); - $response = $this - ->actingAs($user) - ->from('/profile') - ->delete('/profile', [ - 'password' => 'wrong-password', - ]); + $this->actingAs($user); - $response - ->assertSessionHasErrorsIn('userDeletion', 'password') - ->assertRedirect('/profile'); + $component = Volt::test('profile.delete-user-form') + ->set('password', 'wrong-password') + ->call('deleteUser'); + + $component + ->assertHasErrors('password') + ->assertNoRedirect(); $this->assertNotNull($user->fresh()); }