3

I wanna change default Jetstream components after publishing views (php artisan vendor:publish --tag=jetstream-views) from resources/views/vendor/jetstream/components for example to resources/views/path/to/jet/comps

Mohammad Lotfi
  • 369
  • 5
  • 16

1 Answers1

5

You can do this by copying the components from laravel/jetstream and putting them wherever you like within your app.

Then you need to alias the jetstream class with your own version.

What I did was copy all components from

/vendor/laravel/jetstream/src/Http/livewire/

Copied them to

/app/Http/Livewire/

And changed the namespaces in components to

namespace App\Http\Livewire;`

Then open your app/Providers/JetstreamSrviceProvider.php or if you would prefer you can create your own service provider or use AppServiceProvider.php.

Add the following before the class definition but after the namespace definition:

use Illuminate\Foundation\AliasLoader;

Then in the register method add this:

            $loader = AliasLoader::getInstance();
            $loader->alias('Laravel\Jetstream\Http\Livewire\ApiTokenManager', 'App\Http\Livewire\ApiTokenManager');
            $loader->alias('Laravel\Jetstream\Http\Livewire\CreateTeamForm', 'App\Http\Livewire\CreateTeamForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\DeleteTeamForm', 'App\Http\Livewire\DeleteTeamForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\DeleteUserForm', 'App\Http\Livewire\DeleteUserForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\LogoutOtherBrowserSessionsForm', 'App\Http\Livewire\LogoutOtherBrowserSessionsForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\NavigationDropdown', 'App\Http\Livewire\NavigationDropdown');
            $loader->alias('Laravel\Jetstream\Http\Livewire\TeamMemberManager', 'App\Http\Livewire\TeamMemberManager');
            $loader->alias('Laravel\Jetstream\Http\Livewire\TwoFactorAuthenticationForm', 'App\Http\Livewire\TwoFactorAuthenticationForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\UpdatePasswordForm', 'App\Http\Livewire\UpdatePasswordForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\UpdateProfileInformationForm', 'App\Http\Livewire\UpdateProfileInformationForm');
            $loader->alias('Laravel\Jetstream\Http\Livewire\UpdateTeamNameForm', 'App\Http\Livewire\UpdateTeamNameForm');

Then run

composer dump-autoload

You can then open your version of the components and modify the view paths if you prefer or whatever else it is you were looking to do.

I have built a CMS as a package and done exactly this from a package which works well and means we can ship the package with our own views and updated components.

Boris Wild
  • 33
  • 6
Derek Buntin
  • 171
  • 1
  • 8