A full-stack framework for Laravel that takes the pain out of building dynamic UIs.

Related tags

Laravel livewire
Overview

All Contributors

Laravel Livewire

See the docs for everything: https://laravel-livewire.com/docs/quickstart

Awesome Livewire stuff here: https://github.com/imliam/awesome-livewire

All contributions are welcomed! (but please submit an issue to make sure the PR is warranted first)

Open GitHub issues for all bugs. Ideas and questions belong in Discussions or Discord server.

Contribute to the docs here: https://github.com/livewire/docs

Release Schedule

Livewire uses semantic versioning and will use the following release schedule strategy:

  • Urgent bug fix? Release as "patch" version bump right away
  • Patch? Group of small enhancements and bugfixes to be released every ~2 weeks-ish
  • Minor? New features or significant API additions
  • Major? Breaking changes and big strategy changes

Important Note: All "major" versions will be tagged alongside Laravel's major version release schedule (every 6 months). That does not mean Livewire will release a major version every 6 months, just that when it DOES release a major version, it will coincide with a Laravel release.

Roadmap

Contributors

Thanks goes to these wonderful people (emoji key):


Caleb Porzio

💻 ⚠️

Lance Pioch

💻 🚧

Tonko Mulder

📖

David Piesse

💻 📖 ⚠️

Melek REBAI

💻 🚧

Nuno Maduro

💻

Logan Henson

💻

Joris Kuijpers

💻

Andréas Lundgren

💻

Gal Jakič

⚠️ 🚧

Justin Seliga

💻

Francis Lavoie

💻

P. D. Devins

💻

Mateus Junges

💻

Mark Salmon

💻

Brian Faust

💻 ⚠️ 🚧

Intellow

💻 🚧 💵

Ahmet Bedir

💻

Jesse Leite

📖

Till Krüss

🚧 💻

Tom Westrick

💻

Gustavo Real

💻

Lasse Mettovaara

🚧

Lucas Michot

🚧 💻

Wisdom Anthony Ebong

💻

Frank Lakatos

🚧 💻

Roy Verrips

🚧

The Defenestrator

💻

Angus Allman

🚧

Chrysanthos

💻

ALMAS

💻

Austen Cameron

💻

Cihan Tas

💻

Ilya Sakovich

🚧 💻

Chin Leung

💻

Ricardo Gobbo de Souza

💻

lucasromanojf

💻

Taylor Otwell

💵 💻

Mo Khosh

💻

duccm

💻

Lars Erik Løvhaug

🚧

Harry Gulliford

🚧

Dries Vints

💻

Tor Morten Jensen

💻

Kevin Dion

🚧

Adrian Nürnberger

🚧 💻 ⚠️

Stefan Bauer

💻

Benjamin Beganović

🚧

Ruud Schuurmans

🚧

John Gile

💻 ⚠️ 🚧

Jason Beggs

🚧

Ramesh Mhetre

💻

Manojkiran Appathurai

💻

Steve Bauman

🚧

Tim

🚧

CS Rhymes

🚧 💻

Niels Peen

💻

Wojtek Mieszczak

🚧

Imran Bajerai

💻

Tom Janssen

💻

Dan Harrin

💻

Michael Bøcker-Larsen

🚧

DavideMoney

💻

Dennis van Dalen

💻

Cao Minh Duc

🚧

Ahmed Mohamed Abd El Ftah

💻

Eric Chow

💻

Muzaffer Dede

💻

Brent Vardy

⚠️

Erik Westlund

💻

Zep Fietje

💻 🐛 📖

This project follows the all-contributors specification. Contributions of any kind welcome!

License

Copyright © Caleb Porzio

Laravel Livewire is open-sourced software licensed under the MIT license.

Comments
  • Livewire encountered corrupt data when trying to hydrate the component issue.

    Livewire encountered corrupt data when trying to hydrate the component issue.

    Describe the bug Short: I have an array of tasks, just a 2d array with text in keys, that livewire is loosing state on.

    Longer: This is a volunteer school board project that I'm going VERY YANGI on, in the hopes it takes just a few days of spare time. We have a bunch of shared tasks, that I'm putting online for the right people to see.

    I made a simple checklist component and added it to the site, I haven't even put items in a DB at this point, (perhaps that could help, but I decided to go all the way for the YAGNI)

    Here is the component model, I"m just putting the whole thing in as is so it's easy to test:

    <?php
    
    namespace App\Http\Livewire;
    
    use Livewire\Component;
    
    class Checklist extends Component
    {
        public $flash = '';
        public $question = '';
        public $tasks = [
            'setup_the_system'=>[
                'title_note' => 'Most of this section is stuff that you won\'t readily be able to see,
                for example programming this checklist and the ability to ask questions here. However,
                it\'s all very helpful in moving this forward in the easiest way possible to solve problems
                in the easiest ways we can think of.',
                'create_visual_checklist_format' => 1,
                'create_version_repository'=>1,
                'create_version_repository_note'=> 'This basically will show all versions of the project, it\'s a <em>DR</em>
                (Disaster recovery) mechanism, in case I kick the bucket, another person can take over with a list of everything
                that\'s ever been done and things that need to get done in order to move forward. I will also endeavour to
                find someone to take over for me in case that should occur.',
                'kick_bucket_replacement_volunteer_found' => 0,
                'put_up_temporary_site'=>1,
                'put_up_temporary_site_note'=>'you are on it, the data on here will constantly be destroyed and re-written
                as we get ready to make something real! As real as this feels, don\'t save anything here that is important.
                Instead email me or keep a word doc, or basically anything else other than saving real data here.',
            ],
            'PAC USE CASES (A CHECK MEANS IT\'S AGREED UPON)' => [
                'Gatekeeper authorizes guardians who register'=>1,
                'Gatekeeper authorizes guardians who register_note'=> 'The <b>"Gatekeeper"</b> is a PAC member who has access
                 to information and knows which families are attending the school and which ones are not.<br><br>
                 Anyone who registers need to go through a 2 step process to have access to <b><em>any</em></b> information.
                 Step 1 is simply verifying their email address which they can do without any intervention from the gatekeeper.
                 Step 2 requires a person to actually allow the verified guardian access to see our internal information.
                 Step 2 will also need to be re-done every year.',
                'Gatekeeper is notified each time someone registers'=>1,
                'Gatekeeper is notified each time a child is registered'=>1,
                'Gatekeeper confirms child details including homeroom'=>1,
                'Gatekeeper confirms child details including homeroom_note'=> '
                This seems overwhelming for 1 person, it could even be 2 people sitting together on skype or in an office
                calling out names, it should take more than an evening or 2.
                ',
    
                'pac members / room reps can send notifications to their classes'=>0,
                'pac members / room reps can send notifications to their classes_note'=>'
                This is an idea, notice the unchecked box, and opinions are welcome. <br><br>
                Instead of a cumbersome trickle down human information system PAC emails me, I email my room constituents,
                perhaps school wide updates like the PAC meeting details can just be summarized and sent to the people who
                want notification. Either everyone if it\'s deemed important or, people who subscribed to news in some fashion.<br><br>
                When there are room specific issues, we could then pass those on directly as room reps.
                ',
            ],
    
            'GUARDIAN USE CASES (A CHECK MEANS IT\'S AGREED UPON)' => [
                'Guardian can register their children'=>1,
                'Guardian can add other guardians to their family' => 1,
                'Guardian can add other guardians to their family_note' => '
                Guardians who are added get a notification email to register',
                'Should invited guardians need to be confirmed by gatekeeper?'=>0,
                'Should invited guardians need to be confirmed by gatekeeper?_note'=>'
                For example, I go through registration and get confirmed. I then add another guardian Jane, and
                Jane gets an email to register. Jane registers and gets verified via email.<br><br>
                Does she need to get confirmed too?',
                'Guardians add children'=>1,
            ]
        ];
        
        public function render()
        {
            return view('livewire.checklist');
        }
        
        
        public function askMe()
        {
            $this->flash = $this->question;
            $this->question = '';
        }
    }
    
    <div class="">
        @if(!empty($flash))
            <div class="p-12 bg-blue-100">{{$flash}}</div>
        @endif
    
        <div class="flex flex-col md:flex-row">
            <div class="w-full md:w-1/2">
                @foreach($tasks as $title => $group)
                    <div
                        class="font-semibold mt-4 tracking-wide text-sm uppercase text-gray-600">{{ str_replace('_',' ',$title) }}</div>
                    @foreach($group as $key=>$value)
                        @if(is_array($value))
                            <div
                                class="font-semibold mt-4 ml-8 tracking-wide text-sm uppercase text-gray-600">{{ str_replace('_',' ',$key) }}</div>
                            @foreach($value as $childKey=>$childValue)
                                @if(Str::endsWith($childKey,'_note'))
                                    <div
                                        class="mt-1 ml-12 pl-3 tracking-wide text-sm text-gray-600">{!! $childValue !!}</div>
                                @else
                                    <label class="ml-8 flex items-center mt-2">
                                        <input type="checkbox"
                                               wire:model.lazy="tasks.{{ $title }}.{{ $key }}.{{ $childKey }}"
                                               class="form-checkbox" @selected($tasks[$title][$key][$childKey],1)>
                                        <span class="ml-2">{{ str_replace('_',' ',$childKey) }}</span>
                                    </label>
                                @endif
                            @endforeach
                        @else
                            @if(Str::endsWith($key,'_note'))
                                <div
                                    class="mt-1 {{ ($key != 'title_note'? 'ml-4 pl-3': '') }} tracking-wide text-sm text-gray-600">{!! $value !!}</div>
                            @else
                                <label class="flex items-center mt-2">
                                    <input type="checkbox" wire:model.lazy="tasks.{{ $title }}.{{ $key }}"
                                           class="form-checkbox" @selected($tasks[$title][$key],1)>
                                    <span class="ml-2">{{ str_replace('_',' ',$key) }}</span>
                                </label>
                            @endif
                        @endif
                    @endforeach
                @endforeach
    
    
            </div>
            <div class="w-full md:w-1/2 mt-4">
                <div class="md:fixed md:w-5/12">
                    <div class="flex flex-col w-full md:ml-12">
                        <div class="font-semibold tracking-wide text-sm uppercase text-gray-600">Questions / Concerns</div>
    
                        <label class="block mt-2 w-full mx-auto">
                            <div class="form-label">I'd like to know ... @error('question')<br>{{ $message }}@enderror</div>
                            <textarea wire:model.lazy="question" name="question" id="question" autocomplete=""
                                      autocapitalize="off"
                                      rows="15"
                                      class="form-input block w-full @error('question') error @enderror"
                                      placeholder="how can I help you?">{{ $question }}</textarea>
                        </label>
    
                        <button wire:click.prevent="askMe" class="btn brand w-full mt-6">Ask Me Stuff!</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    

    It produces something like this: Screen Shot 2019-11-08 at 1 48 11 PM

    To Reproduce Steps to reproduce the behavior:

    1. Make a livewire enabled project
    2. Add the checklist component
    3. Add any input to the Ask Me a Question Field
    4. Click the button

    Expected behavior The flash public item will get the data from the text area

    Screenshots If applicable, add screenshots to help explain your problem. Screen Shot 2019-11-08 at 1 51 29 PM

    Desktop (please complete the following information): Macos Catalina Brave browser, same thing happens in google chrome.

    Additional context When I shrink the array down it will work or fail at some random size.

    There is no way here to "key" this up without a re-implementation maybe numeric keys or task objects. But it feels unnecessary for something so small and simple.

    opened by roni-estein 84
  • initial-data attribute not found in component after updating to 1.0.1

    initial-data attribute not found in component after updating to 1.0.1

    I updated livewire from 0.7.4 to 1.0.1 and after updating I get this error in the console.

    index.js:19 Uncaught TypeError: Cannot read property 'data' of null
        at new Component (index.js:19)
        at index.js:69
        at Array.forEach (<anonymous>)
        at Livewire.start (index.js:67)
        at HTMLDocument.<anonymous> (dashboard:38)
    

    The attribute is in the rendered HTML but when the component is parsed by livewire, it is not found.

    Update:-

    I dug into the issue a little bit morning. Here are the steps to reproduce the issue. I assume that you have a fresh installation of Laravel with livewire and Turbolinks installed and configured.

    1. Create two separate livewire components.
    2. Include those two livewire components in two separate pages.
    3. Now add links into your layout to navigate between the two pages.
    4. Now navigate to any one of the pages and then quickly navigate to another page while the previous page request is still pending.
    Needs Better Reproducibility 
    opened by besrabasant 60
  • Session expired behaviour

    Session expired behaviour

    We get error 419 if the page is inactive for a while.

    Describe the solution you'd like I see that you have disabled session expiration before and re-enabled it, which was a good move. But can we create an api where we can handle this situation more gracefully? Maybe we decide to reload the page, or show a beautiful error, or something else.

    opened by mokhosh 52
  • Problem loading Livewire.js

    Problem loading Livewire.js

    It's likely to be a simple thing but I can't manage to solve it on my own smh.

    On my local env it's working fine just doing this:

    ...
        @livewireAssets
    </body>
    

    This of course load the file properly as it should. Now, after I deployed the site (using Forge) it didn't load the file at all with the relative path. My network tab (Chrome) says:

    Failed to load resource: the server responded with a status of 404 (Not Found) (index):14 Uncaught ReferenceError: Livewire is not defined at (index):14

    I though it might be the directory/file that isn't accesible but when I hit that path adding the IP at the beginning it loads the js file just fine (http://165.227.80.80/livewire/livewire.js?)id=8456629107e9ab1c518f)

    So, then checking the docs I saw that you can customized the base_url initializing the directive with a custom url, so I tried that also:

        @livewireAssets(['base_url' => ENV('APP_URL'));
    

    But even with the full path the file isn't loading:

    image

    This is the link to the site.

    Has anyone faced this problem before?

    opened by kennyhorna 44
  • File upload over https fails signature verification

    File upload over https fails signature verification

    Fille uploads doesn't work over https, whereas it works perfectly over http

    Set up livewire file upload, then use https (e.g. with ngrok) the upload fails with the request to

    Request URL: https://XYZ.ngrok.io/livewire/upload-file?expires=1593877850&signature=0c0b334969966e642854a730fdb78accd3c7332648291fc2449530f15cea7035 Request Method: POST Status Code: 401 Unauthorized

    Following the flow with the debugger the problem arises, in the vendor/livewire/livewire/src/Controllers/FileUploadHandler.php, in the handle method.

    In particular in the

    abort_unless(request()->hasValidSignature(), 401); line.

    Commenting it out works around the problem (the uploads works) but of course is not optimal,

    Context

    • Livewire version: 1.3.0
    • Laravel version: 7.10.0
    • Browser: [Firefox, Vivaldi]
    opened by danilogiacomi 40
  • Select element with pre-selected value not rendering correctly

    Select element with pre-selected value not rendering correctly

    Describe the bug: A select element with a pre selected value does not render correctly for the user

    To Reproduce

    1. Create a blade template with a select element
    2. Pass a value from livewire to the blade template
    3. Use standard blade syntax to set the pre-selected value

    Expected result: If the second option in the select element is selected then this should be visible to the user when the dom renders.

    Actual result: Always the first option in the select element is visible to the user even though another option has the correct html selected tag.

    Blade Input:

    <select id="role_id" wire:model="role_id">
        <option value="1" {{ $role_id == 1 ? 'selected="selected"' : '' }}>Owner</option>
        <option value="2" {{ $role_id == 2 ? 'selected="selected"' : '' }}>Collaborator</option>
    </select>
    

    HTML Output

    <select id="role_id" wire:model="role_id">
        <option value="1">Owner</option> 
        <option value="2" selected="selected">Collaborator</option>
    </select>
    

    Screenshots image

    Desktop (please complete the following information):

    • Browser: chrome
    opened by ChrisJohnson-83 38
  • Dynamic livewire components

    Dynamic livewire components

    This PR adds dynamic Livewire component support to new component syntax.

    This will now be possible (the same syntax as blade dynamic components https://laravel.com/docs/8.x/blade#dynamic-components):

    <livewire:dynamic-component component="counter" />
    

    It also supports component attribute as an evaluated expression:

    <livewire:dynamic-component :component="'counter-'.$loop->index" />
    

    There were no tests for the Livewire tag compiler, so I have added them and added tests for dynamic component tag compilation.

    Hope this helps!

    opened by joshhanley 35
  • Getting 404 response on all request on v2.3.11

    Getting 404 response on all request on v2.3.11

    Description

    After upgrading from 2.3.8 to 2.3.11, all livewire component getting 404 response

    Context

    • Livewire version: [e.g. 2.3.11]
    • Laravel version: [e.g. 7.30.4]
    opened by tarikhagustia 35
  • Alpine does not initialise inside a blade conditional, after re-render.

    Alpine does not initialise inside a blade conditional, after re-render.

    This applies to a page re-render only, after some logic is performed. For example:

    <button wire:click="setModelToTrue()">click</button>
    
    @if($model->itIsTrue())
    <div x-data="{ open: false }">
      <button @click="open = true">Show More...</button>
      <ul x-show="open" @click.away="open = false">
        <li>
          <button wire:click="archive">Archive</button>
        </li>
        <li>
          <button wire:click="delete">Delete</button>
        </li>
      </ul>
    </div>
    @endif
    

    On a page load/full refresh with "itIsTrue()" all works as expected.

    However, If we click the button to turn "it to true" dynamically, the re-render results in the alpine component not being initialized and the dropdown does not work.

    I have tried livewire keys, element ID's, extra div elements (as in the troubleshooting section) but I just can't get anything working.

    opened by booni3 34
  • Data binding input lose focus after the first request

    Data binding input lose focus after the first request

    Describe the bug Input with wire:model lose focus after the first request was sent

    Expected behavior Input should focus until I blur or click away

    GIFs capture

    Additional context This issue however, solved if I place the input one level after the root <div>

    <div>
        <h1 class="mb-8 font-bold text-3xl">Users</h1>
    
        <input wire:model="search" type="text"
            class="py-2 px-4 w-64 rounded shadow focus:shadow-outline focus:outline-none" placeholder="Search.."
            autocomplete="off">
    </div>
    

    Worked!

    <div>
        <h1 class="mb-8 font-bold text-3xl">Users</h1>
    
        <div class="mb-6 flex justify-between items-center">
            <div class="flex items-center">
                <input wire:model="search" type="text"
                    class="py-2 px-4 w-64 rounded shadow focus:shadow-outline focus:outline-none" placeholder="Search.."
                    autocomplete="off">
            </div>
        </div>
    </div>
    

    Not worked :thinking:

    Any help would be appreciated. Thanks.

    Needs Better Reproducibility 
    opened by aerrata 34
  • Bound data is converted to array after render

    Bound data is converted to array after render

    Describe the bug Livewire seems to convert bound data (collections, objects, Eloquent instances) into arrays after a render.

    To Reproduce

    1. Create a livewire component and add a property public $user;.
    2. On mount: fetch a user and optionally log its class.
    3. Add an action that, when a button gets clicked, tries to fetch a related model via $this->user->relatedModel.

    Expected behavior An instance of the related model is fetched.

    Actual behavior An exception is thrown: Call to a member function relatedModel() on array.

    Screenshots

    image

    opened by cihantas 34
  • Bump json5 from 2.2.0 to 2.2.3

    Bump json5 from 2.2.0 to 2.2.3

    Bumps json5 from 2.2.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Fix route matching issues

    Fix route matching issues

    Fixes #5462, #5467, #5471, #5466, #5470, #5464 and comments on PR #4570.

    The original bug

    This issue originally started when the persistant middleware feature was added to Livewire.

    When this was added, Livewire support for locale prefixes broke, as it was trying to match routes based on the / root path. But localised applications may have a prefix like /en in the path.

    A 404 is triggered when the route cannot be matched.

    Pasted image 20230106133835

    This was fixed in v2.3.14, by first trying to match the root route, and if that doesn't work then it gets the locale from the fingerprint, removes it from the path and tries again.

    The bug that was recently fixed

    But it still didn't completely fix the issue, due to a bug with the Str::replaceFirst() parameter order, causing it to always return a URL of an empty string "" which is essentially the root URL.

    If the root route has authentication on it, and the user isn't logged in, it actually triggers a redirect to the login page, causing Livewire to break completely, as the response is the HTML for the login page.

    Pasted image 20230106133703

    If there is no authentication though, there are other instances where a NotFoundHttpException can occur (such as if there is no root route), triggering the 404 modal.

    You can see an example of this bug in the below screenshot (see ReplaceFirst with bug output).

    It takes the current url http://livewire-httpconnectionhandler-demo.test/en/welcome and returns an empty URL.

    Pasted image 20230106133145

    A fix was recently merged for this in PR #4570 that swapped the order of the parameters in Str::replaceFirst() and the result is shown above (see ReplaceFirst with fix), where the URL correctly has the locale removed.

    The above fix works great for anyone using packages like mcamara/laravel-localization so that localisation is handled correctly.

    The latest bugs

    The fix which corrected the parameter order of Str::ReplaceFirst has uncovered two new bugs, one of which is when running a Laravel/Livewire app in a sub directory, and the other is when using localisation on the root route.

    Localisation on the root route

    For an app that uses localisation on the root route, it would have a URL like http://livewire-httpconnectionhandler-demo.test/en. This URL currently triggers a 404 with the fix from PR#4570 due to it trying to match the locale and then a forward slash.

    This can be fixed by ensuring the forward slash is before the locale instead of after, as noted here.

    Hosting in a subdirectory

    In the scenario where a Laravel/Livewire application is hosted in a subdirectory, currently the latest release of Livewire (v2.10.8) breaks all Livewire components when a subsequent request is triggered.

    First question is, why are people hosting them in subdirectories? As it turns out, there are quite a lot of people who still use Apache, and only have a single web root folder configured on their local machines. Therefore then run all they're apps out of subdirectories. So this issue is mainly impacting their local development environment. But when the deploy their app to a proper domain, it is fine.

    So what is happening is, if running an application using a URL such as http://localhost/myapp/mycomponent, any subsequent Livewire requests return a 404, as the route that is trying to be matched is /myapp/mycomponent instead of the path relative to the project of /mycomponent.

    Now as to why this bug has started happening.

    The reason for this is, now that the Str::replaceFirst() is actually returning a full URL (instead of an empty string), Livewire is making use of this URL to match it against any available routes to try and find the original route (for the persistent middleware feature).

    To determine the original route and its assigned middleware, Livewire generates a fake request using the URL and method provided. This request is then used to match against routes in Laravel's router.

    But the faked request that gets generated isn't aware of the projects true base path being inside a subdirectory in the main web root folder, as such believes it's base path is the web root folder, causing to try and match the full URI (/myapp/mycomponent) as explained above.

    To fix this, we can make use of the real request to Livewire's endpoint to determine the projects actual path and pass these details into the faked request, allowing it to run the match correctly.

    Conclusion

    This PR fixes both of the above issues. I have tested it locally using a repo that has localisation and another repo being hosted in a subdirectory, ensuring that the bugs do actually occur and that applying this PR fixes them.

    I've also made sure persistent middleware still all works as expected.

    These issues are related but also distinct, so if required, I can split into two PRs, but felt it was easier just to give all the context in one PR.

    I have no idea how to test this, as such haven't added tests to this PR.

    Hope this helps!

    opened by joshhanley 4
  • Add failing test for x-model on checkboxes inside conditional

    Add failing test for x-model on checkboxes inside conditional

    The Problem: In some cases, the change listener for x-model is duplicated when x-model is within a blade @if. This causes incorrect values to be bound when checkboxes are bound to an array on the Alpine side of things.

    I would expect the checkbox here to bind 1 to the checks array only once, but it actually is bound twice! CleanShot 2022-12-20 at 15 36 58

    Discovered this while using Livewire v2 and Alpine v3. Didn't make a discussion... the failing test seemed more useful to post as a PR instead. Tried to figure out what was happening on the Alpine side, but haven't been successful thus far. It maxes out at two x-model listeners. Something to do with cloning the Alpine component and the original x-model event listener not being removed.

    See this line: https://github.com/livewire/livewire/pull/5454/files#diff-c9834c12ea72083bd51b7800e43124ccc188229415d4c7a3e30770d4e66a6d65R21

    If the checkbox is within the @if statement, the problem appears. When Livewire "Alpinifies" the element, it seems to clone and never remove the original event listener.

    opened by austenc 3
  • Add BackedEnum as possible type for property

    Add BackedEnum as possible type for property

    Since backed enums can be used as a type since commit 8dd340ea07da5c5eb33afa3fce258046b4a6938a, is good to have it mentioned on PublicPropertyTypeNotAllowedException.

    I was misled thinking that enums were not supported since I didn't see enums on the list provided in the exception message, but the problem was just that my enums were not backed.

    opened by sirbaconjr 2
  • change awesome-livewire link

    change awesome-livewire link

    Review the contribution guide first at: https://laravel-livewire.com/docs/2.x/contribution-guide

    1️⃣ Is this something that is wanted/needed? Did you create a discussion about it first? https://github.com/livewire/livewire/discussions/5310 2️⃣ Did you create a branch for your fix/feature? (Master branch PR's will be closed) yes 3️⃣ Does it contain multiple, unrelated changes? Please separate the PRs out. no 4️⃣ Does it include tests? (Required) no 5️⃣ Please include a thorough description (including small code snippets if possible) of the improvement and reasons why it's useful.

    The current awesome livewire repository was updated more than 2 years ago and there are 9 pending PR. I asked for permission from the owner of the repo in twitter DM but he didn't answered my DM after months. and I think livewire deserves a much updated and better awesome list.

    I've merged all Pending PR's into my repo and added bunch of other libraries that built with livewire.

    Thanks for contributing! 🙌

    opened by ariaieboy 0
Releases(v2.10.8)
  • v2.10.8(Dec 22, 2022)

    What's Changed

    • Change from nowdoc to heredoc on asset warning output by @joshhanley in https://github.com/livewire/livewire/pull/5173
    • Check success before showing COMPONENT MOVED message by @remeritus in https://github.com/livewire/livewire/pull/5304
    • Publish less files to packagist by @NiclasvanEyk in https://github.com/livewire/livewire/pull/5156
    • Typo by @JayBizzle in https://github.com/livewire/livewire/pull/5145
    • Fixes bug where null computed property is considered set by @aidan-casey in https://github.com/livewire/livewire/pull/5121
    • Fix: Typed property must not be accessed before initialization by @alexandre67fr in https://github.com/livewire/livewire/pull/4957
    • Fix Safari special character encoding issue by @bobwurtz in https://github.com/livewire/livewire/pull/4942
    • Fix invalid array key for validate only by @BBonnet22 in https://github.com/livewire/livewire/pull/4941
    • Livewire Best Practices (ReadMe Update) by @michael-rubel in https://github.com/livewire/livewire/pull/4922
    • Add type=button to tailwind paginators by @codemonkey76 in https://github.com/livewire/livewire/pull/5331
    • Fix localization url in HttpConnectionHandler.php by @dennisvandalen in https://github.com/livewire/livewire/pull/4570
    • Add common OS generated files to .gitignore by @jukkakoskinen in https://github.com/livewire/livewire/pull/5369
    • PHP 8.2 support by @ariaieboy in https://github.com/livewire/livewire/pull/5416
    • Add StringNormalization support to arrays and collections to fix Safari checksum issues by @Balsakup in https://github.com/livewire/livewire/pull/5379

    New Contributors

    • @remeritus made their first contribution in https://github.com/livewire/livewire/pull/5304
    • @NiclasvanEyk made their first contribution in https://github.com/livewire/livewire/pull/5156
    • @JayBizzle made their first contribution in https://github.com/livewire/livewire/pull/5145
    • @aidan-casey made their first contribution in https://github.com/livewire/livewire/pull/5121
    • @bobwurtz made their first contribution in https://github.com/livewire/livewire/pull/4942
    • @BBonnet22 made their first contribution in https://github.com/livewire/livewire/pull/4941
    • @michael-rubel made their first contribution in https://github.com/livewire/livewire/pull/4922
    • @codemonkey76 made their first contribution in https://github.com/livewire/livewire/pull/5331
    • @jukkakoskinen made their first contribution in https://github.com/livewire/livewire/pull/5369
    • @Balsakup made their first contribution in https://github.com/livewire/livewire/pull/5379

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.7...v2.10.8

    Source code(tar.gz)
    Source code(zip)
  • v2.10.7(Aug 8, 2022)

    What's Changed

    • Fix select input option clearing by @joshhanley in https://github.com/livewire/livewire/pull/5129
    • Skip @js Blade directive registration if already defined by @lupinitylabs in https://github.com/livewire/livewire/pull/4876

    New Contributors

    • @lupinitylabs made their first contribution in https://github.com/livewire/livewire/pull/4876

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.6...v2.10.7

    Source code(tar.gz)
    Source code(zip)
  • v2.10.6(Jun 29, 2022)

    What's Changed

    • Fix: Ensure component directory exists when discovering components by @danharrin in https://github.com/livewire/livewire/pull/4923
    • Fix wireable order validation by @joshhanley in https://github.com/livewire/livewire/pull/4933
    • Add facade auto-completion for withQueryParams by @hxnk in https://github.com/livewire/livewire/pull/5039

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.5...v2.10.6

    Source code(tar.gz)
    Source code(zip)
  • v2.10.5(Apr 7, 2022)

    What's Changed

    • Add logic for echo presence listen channel #3071 by @davidpiesse in https://github.com/livewire/livewire/pull/4772
    • Fix assertion problem by @rezaamini-ir in https://github.com/livewire/livewire/pull/4733
    • Fix respect modified properties by prepareForValidation during checking rules by @comes in https://github.com/livewire/livewire/pull/4688
    • Fix file is deleted but property still references deleted file if filename mismatches. by @AhrimFakhriy in https://github.com/livewire/livewire/pull/4712
    • Allow dispatching CustomEvent with falsy value by @adriaanzon in https://github.com/livewire/livewire/pull/4765
    • Fix: Use alias for page, if defined by @dsturm in https://github.com/livewire/livewire/pull/4793
    • Remove test flag from MoveCommand by @Naoray in https://github.com/livewire/livewire/pull/4824
    • Allow passing the component class name to assertEmittedTo by @totov in https://github.com/livewire/livewire/pull/4833

    New Contributors

    • @silnarm made their first contribution in https://github.com/livewire/livewire/pull/4777
    • @comes made their first contribution in https://github.com/livewire/livewire/pull/4688
    • @AhrimFakhriy made their first contribution in https://github.com/livewire/livewire/pull/4712
    • @adriaanzon made their first contribution in https://github.com/livewire/livewire/pull/4765
    • @dsturm made their first contribution in https://github.com/livewire/livewire/pull/4793
    • @totov made their first contribution in https://github.com/livewire/livewire/pull/4833

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.4...v2.10.5

    Source code(tar.gz)
    Source code(zip)
  • v2.10.4(Feb 19, 2022)

    What's Changed

    • Avoid 500 server error when component gets request with empty body by @marispro in https://github.com/livewire/livewire/pull/4316
    • FIX keep child components even when a parent component is skipped rendering. by @nshiro in https://github.com/livewire/livewire/pull/4450
    • Support for native enums by @andreascreten in https://github.com/livewire/livewire/pull/4506
    • Missing dispatched events with assertDispatchedBrowserEvent() returns in undefined array key by @ahinkle in https://github.com/livewire/livewire/pull/4511
    • Allow frontend wire: actions to span multiple lines by @claytonrcarter in https://github.com/livewire/livewire/pull/4618
    • Ensure Livewire request testing override is false by default by @telkins in https://github.com/livewire/livewire/pull/4619
    • Fix multiple trait method executions by @jelib3an in https://github.com/livewire/livewire/pull/4670
    • Pass layout data to layout component constructor by @brizzo in https://github.com/livewire/livewire/pull/4678
    • Disable user-select on disabled pagination links by @dianfishekqi in https://github.com/livewire/livewire/pull/4680
    • Add assertBrowserEventIsNotDispatched() method. by @rezaamini-ir in https://github.com/livewire/livewire/pull/4685

    New Contributors

    • @andreascreten made their first contribution in https://github.com/livewire/livewire/pull/4506
    • @jelib3an made their first contribution in https://github.com/livewire/livewire/pull/4670
    • @brizzo made their first contribution in https://github.com/livewire/livewire/pull/4678
    • @dianfishekqi made their first contribution in https://github.com/livewire/livewire/pull/4680

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.3...v2.10.4

    Source code(tar.gz)
    Source code(zip)
  • v2.10.3(Feb 14, 2022)

    What's Changed

    • Image filename with FilePond upload by @robertorinaldi-dev in https://github.com/livewire/livewire/pull/4486

    New Contributors

    • @robertorinaldi-dev made their first contribution in https://github.com/livewire/livewire/pull/4486

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.2...v2.10.3

    Source code(tar.gz)
    Source code(zip)
  • v2.10.2(Feb 11, 2022)

    What's Changed

    • Add invade() helper instead of ObjectPrybar by @calebporzio in https://github.com/livewire/livewire/pull/4649
    • Update multiple root warning link by @joshhanley in https://github.com/livewire/livewire/pull/4651
    • Fix S3 uploads with Flysystem v2+ by @joshhanley in https://github.com/livewire/livewire/pull/4650

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.1...v2.10.2

    Source code(tar.gz)
    Source code(zip)
  • v2.10.1(Jan 22, 2022)

    What's Changed

    • [2.x] Fixes the way Livewire sets the session on Livewire internal requests by @nunomaduro in https://github.com/livewire/livewire/pull/4559

    Full Changelog: https://github.com/livewire/livewire/compare/v2.10.0...v2.10.1

    Source code(tar.gz)
    Source code(zip)
  • v2.10.0(Jan 21, 2022)

  • v2.9.0(Jan 13, 2022)

    What's Changed

    • Fix Livewire requests across load balancers by @calebporzio in https://github.com/livewire/livewire/pull/4354
    • Add deploy invalidation by @calebporzio in https://github.com/livewire/livewire/pull/4430
    • Added 2 new assertions: assertEmittedTo() and assertEmittedUp() by @jonneroelofs in https://github.com/livewire/livewire/pull/4336
    • Fix checkboxes and integers by @joshhanley in https://github.com/livewire/livewire/pull/4382
    • Fix Calling reset() on an object is deprecated by @reefki in https://github.com/livewire/livewire/pull/4398
    • Suppress type warning by @telkins in https://github.com/livewire/livewire/pull/4376
    • Fix cursor pagination in bootstrap by @nshiro in https://github.com/livewire/livewire/pull/4406
    • Set initial property values from query string aliases by @CraftLogan in https://github.com/livewire/livewire/pull/4362
    • Fix for TypeError in invokable components by @alexandre67fr in https://github.com/livewire/livewire/pull/4307
    • Undefined array key "value" for syncInput by @danharrin in https://github.com/livewire/livewire/pull/4460
    • Make empty() and isset() work on computed properties by @lennardv2 in https://github.com/livewire/livewire/pull/4375

    New Contributors

    • @reefki made their first contribution in https://github.com/livewire/livewire/pull/4398
    • @telkins made their first contribution in https://github.com/livewire/livewire/pull/4376
    • @nshiro made their first contribution in https://github.com/livewire/livewire/pull/4406
    • @CraftLogan made their first contribution in https://github.com/livewire/livewire/pull/4362
    • @alexandre67fr made their first contribution in https://github.com/livewire/livewire/pull/4307
    • @lennardv2 made their first contribution in https://github.com/livewire/livewire/pull/4375

    Full Changelog: https://github.com/livewire/livewire/compare/v2.8.2...v2.9.0

    Source code(tar.gz)
    Source code(zip)
  • v2.8.2(Dec 10, 2021)

    What's Changed

    • Add cursor pagination to Livewire by @ariaieboy in https://github.com/livewire/livewire/pull/3215
    • Add inline-flex to wire:loading by @Francismori7 in https://github.com/livewire/livewire/pull/4246
    • Make assertSet() and assertNotSet() more strict by @DudeMason in https://github.com/livewire/livewire/pull/4252
    • Fix breaking changes to nested array file upload dehydration by @danharrin in https://github.com/livewire/livewire/pull/4378

    New Contributors

    • @Francismori7 made their first contribution in https://github.com/livewire/livewire/pull/4246

    Full Changelog: https://github.com/livewire/livewire/compare/v2.8.1...v2.8.2

    Source code(tar.gz)
    Source code(zip)
  • v2.8.1(Dec 2, 2021)

    Fixed

    • Fix validate only by @joshhanley in https://github.com/livewire/livewire/pull/4319

    Full Changelog: https://github.com/livewire/livewire/compare/v2.8.0...v2.8.1

    Source code(tar.gz)
    Source code(zip)
  • v2.8.0(Nov 24, 2021)

    Added

    • Add support to arrays as parameters in the assertSeeHtml and assertDontSeeHtml methods by @lucaspontodev in https://github.com/livewire/livewire/pull/4078
    • Check the class name is valid before creating it by @mrsimonbennett in https://github.com/livewire/livewire/pull/4064
    • Pass response as second argument to onError callback by @lucasromanojf in https://github.com/livewire/livewire/pull/4179
    • Query string aliases by @amiranagram in https://github.com/livewire/livewire/pull/4178
    • $validationCustomValues added to components by @kenlas in https://github.com/livewire/livewire/pull/4159
    • Allow Responsable objects download by @fabio-ivona in https://github.com/livewire/livewire/pull/4144
    • New method "resetExcept" by @SebastianSchoeps in https://github.com/livewire/livewire/pull/4098
    • Add custom headers to AJAX message request by @naabster in https://github.com/livewire/livewire/pull/4141
    • Discover index components in subfolders by @Naoray in https://github.com/livewire/livewire/pull/4203
    • Add validation for Wireable DTOs by @stevenmond in https://github.com/livewire/livewire/pull/4036
    • Adding an $this->except() and $this->all() methods into InteractsWithProperties.php by @nihad-ziyatkhanli in https://github.com/livewire/livewire/pull/4027
    • Add PHP 8.1 support by @joshhanley in https://github.com/livewire/livewire/pull/4271

    Fixed

    • Fix issue with autofill in Safari. by @codywoolsey in https://github.com/livewire/livewire/pull/4247
    • Cleanup CI by @nuernbergerA in https://github.com/livewire/livewire/pull/4040
    • Fix for model properties set to an empty array returning NULL after a request by @joshhanley in https://github.com/livewire/livewire/pull/4135
    • Correct behavior for ampersand (&) characters in query string property values by @nullthoughts in https://github.com/livewire/livewire/pull/4155
    • Change the page type from int to double. by @oyepez003 in https://github.com/livewire/livewire/pull/4103
    • Fix wire:key issue containing commas when using on livewire components by @walirazzaq in https://github.com/livewire/livewire/pull/4085
    • Fix validate only custom attributes by @joshhanley in https://github.com/livewire/livewire/pull/4188
    • Revert back wire:loading.remove on request error. by @lucasromanojf in https://github.com/livewire/livewire/pull/4185
    • Update html after download by @fabio-ivona in https://github.com/livewire/livewire/pull/4191
    • Account For Varying Emission Params by @DudeMason in https://github.com/livewire/livewire/pull/4233
    • Check all the values in dehydratePropertyFromWithFileUploads before calling serializeMultipleForLivewireResponse by @some-daan in https://github.com/livewire/livewire/pull/4239
    • Wireable Image Dehydration in SupportFileUpload by @stevenmond in https://github.com/livewire/livewire/pull/4248

    New Contributors

    • @lucaspontodev made their first contribution in https://github.com/livewire/livewire/pull/4078
    • @mrsimonbennett made their first contribution in https://github.com/livewire/livewire/pull/4064
    • @kenlas made their first contribution in https://github.com/livewire/livewire/pull/4159
    • @oyepez003 made their first contribution in https://github.com/livewire/livewire/pull/4103
    • @SebastianSchoeps made their first contribution in https://github.com/livewire/livewire/pull/4098
    • @walirazzaq made their first contribution in https://github.com/livewire/livewire/pull/4085
    • @naabster made their first contribution in https://github.com/livewire/livewire/pull/4141
    • @Naoray made their first contribution in https://github.com/livewire/livewire/pull/4203
    • @DudeMason made their first contribution in https://github.com/livewire/livewire/pull/4233
    • @codywoolsey made their first contribution in https://github.com/livewire/livewire/pull/4247
    • @stevenmond made their first contribution in https://github.com/livewire/livewire/pull/4036
    • @some-daan made their first contribution in https://github.com/livewire/livewire/pull/4239
    • @nihad-ziyatkhanli made their first contribution in https://github.com/livewire/livewire/pull/4027

    Full Changelog: https://github.com/livewire/livewire/compare/v2.7.2...v2.8.0

    Source code(tar.gz)
    Source code(zip)
  • v2.7.2(Oct 20, 2021)

  • v2.7.1(Oct 19, 2021)

    HOTFIX

    Reverting @stack support in Livewire from version 2.7.0 because it breaks people's apps that use @stacks directly inside <script> tags.

    Source code(tar.gz)
    Source code(zip)
  • v2.7.0(Oct 19, 2021)

    Changelog

    Notes

    Run php artisan view:clear when you install this update to get the pushing and prepending to stacks from Livewire components feature working properly.

    Added

    • Support pushing and prepending to stacks from Livewire components #3992
    • Add @js directive #3993
    • Add booted method #4033
    • Support 'withValidator' method #3777
    • Added app_url config value - fixing CDN url problem #3929

    Fixed

    • Fix boot so it runs before all mount and hydrate methods #4026
    • Add instance parameter to failed-validation event #3962
    • Override getPath to return temp path set by Livewire for temporary file upload objects #4001
    • Fix PHP7.2 syntax error #4012
    • Better Octane support - route binding fix #3946
    • Better Octane support - full page component fix #3947
    • Add flush state and feature listeners to support Octane #3987
    • Add fix for skip render on redirect #3971
    Source code(tar.gz)
    Source code(zip)
  • v2.6.7(Sep 25, 2021)

  • v2.6.6(Sep 25, 2021)

  • v2.6.5(Sep 18, 2021)

    Fixed

    • Fix pagination to use dedicated method calls to prevent loops when calling resetPage https://github.com/livewire/livewire/commit/e39edcae6b1971b2d0f327a8e25c40e3d68cb7a0
    Source code(tar.gz)
    Source code(zip)
  • v2.6.4(Sep 18, 2021)

    Fixed

    • Fix pagination query string overwriting component query string https://github.com/livewire/livewire/commit/21443c42e493da6bf13d3ce3adfd1f72e969258b
    • Fix DisableBrowserCache middleware to only apply to HTTP responses #3793
    • Fix entangle not working for non-persisted models https://github.com/livewire/livewire/commit/9004a18e9c30e5ee7ccea9f8959d891f4df271e0
    Source code(tar.gz)
    Source code(zip)
  • v2.6.2(Sep 15, 2021)

    Fix

    • Fix query string being replaced after full page redirect https://github.com/livewire/livewire/commit/844b2eada735132c5c752531330937cf055a6677
    • Revert error bag change https://github.com/livewire/livewire/commit/3755cc5841b28e2c992b4cf363879d58e861a68a
    Source code(tar.gz)
    Source code(zip)
  • v2.6.1(Sep 14, 2021)

    Fix

    • Hotfix: Eloquent collections were being fully unwrapped between requests: https://github.com/livewire/livewire/commit/0d8e44fb558a3f77835f0a8eefdaa98d766bc372
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Sep 14, 2021)

    Added

    • Add component boot() method #3689
    • Support Wireable Objects (DTOs) #3362
    • Deep nested model binding feature #3409
    • Detect multiple root elements #3289
    • Support for multiple paginators #3684
    • Support union types in mount() method #3663
    • Support more Livewire loading delay durations #3529
    • Support adding or removing public properties between deploys #2977
    • Trigger loading indicators for nested array manipulates when using wire:target on the parent array #3530
    • Trigger updatedPage and updatingPage hooks for pagination changes #3632
    • Better support for anonymous blade component layouts #3363
    • Clean query strings when using protected $queryParams #3524
    • Make protected/private methods and properties available via $this inside Blade view #3640
    • Add ->with() method to the redirect() helper #3572
    • Test methods ->assertSee() and ->assertDontSee() allow multiple values now #3443
    • Immutable datetimes #3419
    • Add ->toggle() method for testing components #3628
    • New artisan make:livewire --stub option to specify the stub that is used to create a Livewire component #3577

    Fixed

    • Allow resource_path() to be set as the view_path config option #3374
    • Query strings on conditionally rendered nested components was broken #3685
    • Multiple sets of paginator links within a component was broken #3631
    • Throw error when testing non-livewire component #3680
    • ->validateOnly() should only validate specific fields in a collection/array #3596
    • Fix Octane issue with unresolved route params #3495
    • Use strict comparison on childHasBeenRendered Fix #3665 #3666
    • Correctly get the S3 adapter when it is cached #3585
    • Fix stub generation issues when multiple of the same placeholders are used #3603 #3604
    • Add Content-Type to file download info in effects #3485
    • Simultaneous $wire method calls always return the value of the last call #3510
    • update/nonce-Attribute (missing space) #3393
    • add check for getMissing function #3401
    • Testing Components can generate false positives from wire:id #3290
    • Avoid reflection exception on virtual properties #3320
    • Fix Google Cloud Storage preview URL in Temporary file upload #3499
    Source code(tar.gz)
    Source code(zip)
  • v1.3.9(Aug 12, 2021)

  • v2.5.5(Jul 13, 2021)

  • v2.5.4(Jul 12, 2021)

  • v2.5.3(Jul 8, 2021)

  • v2.5.2(Jul 7, 2021)

    Added

    • Google Cloud Storage driver compatibility for temporary file uploads #3198
    • Add test flag to all commands #3207
    • Add route model binding missing function support #2955
    • Added echo channel type encryptedPrivate #2973

    Fixed

    • IE11 compatibility - remove short arrow function in script tag #3173
    • Fix: non-typed initialized properties were not begin hydrated when setting value to null #3214
    • Fix CSP and Nonce issues #2969
    • Monkey patch setAttribute to allow @ symbols in attribute names (like morphdom adding @click) #3152
    Source code(tar.gz)
    Source code(zip)
  • v2.5.1(Jun 15, 2021)

Owner
Livewire
A full-stack framework for Laravel
Livewire
Jumpstart your web development journey with the HALT Stack Starter Kit, a one-command solution for creating dynamic, scalable, and clean web applications.

Welcome to the HALT Stack Starter Kit! This kit is designed to help you kickstart your web development projects using the HALT Stack, a powerful combi

HALT Stack 6 Jun 7, 2023
A collection of tools for rapidly building beautiful TALL stack interfaces, designed for humans.

Filament is a collection of tools for rapidly building beautiful TALL stack interfaces, designed for humans. Packages Admin Panel • Documentation • De

Filament 5.4k Jan 4, 2023
Viewi for Laravel: Build full-stack and completely reactive user interfaces with PHP.

[WIP] Laravel Viewi This is just a proof-of-concept. Don't use it in production! Viewi for Laravel: Build full-stack and completely reactive user inte

Protone Media 5 Jan 26, 2022
Un sitio web de películas realizado con Laravel y TailwindCSS para la Beca Neoris en Programación Full-Stack dictada por la Universidad Tecnológica Nacional.

Teatralidad Un sitio web realizado con Laravel y TailwindCSS para la Beca Neoris en Programación Full-Stack dictada por la Universidad Tecnológica Nac

Cristian Diego Góngora Pabón 2 Jan 14, 2022
The source code of the Full Stack Europe website.

Full Stack Europe This repository contains the source code for the https://fullstackeurope.com website. Requirements The following tools are required

Full Stack Europe 36 Dec 4, 2022
Takes in a HEX color and produces variations of that colour for the foreground and background

css-colors Takes in a HEX color and produces variations of that colour for the foreground and background It takes a great php class made by Patrick Fi

Soapbox Innovations Inc. 9 Jul 24, 2020
A laravel Livewire Dynamic Selects with multiple selects depending on each other values, with infinite levels and totally configurable.

Livewire Combobox: A dynamic selects for Laravel Livewire A Laravel Livewire multiple selects depending on each other values, with infinite levels of

Damián Aguilar 25 Oct 30, 2022
Dynamic Laravel Livewire Bootstrap 5 modals.

Laravel Livewire Modals Dynamic Laravel Livewire Bootstrap 5 modals. Requirements Bootstrap 5 Installation Require the package: composer require basti

null 55 Dec 27, 2022
Dynamic Laravel Livewire Bootstrap toasts.

Laravel Livewire Toasts This package allows you to dynamically show Bootstrap toasts via Laravel Livewire components. Documentation Requirements Insta

null 13 Nov 12, 2022
A dynamic table component for Laravel Livewire - For Slack access, visit:

A dynamic Laravel Livewire component for data tables. Bootstrap 4 Demo | Bootstrap 5 Demo | Tailwind Demo | Demo Repository Installation You can insta

Anthony Rappa 1.3k Jan 1, 2023
A dynamic Laravel Livewire component for multi steps form

Livewire component that provides you with a wizard that supports multiple steps form while maintaining state.

Vildan Bina 233 Jan 4, 2023
This package gives you a set of conventions to make the most out of Hotwire in Laravel

Introduction This package gives you a set of conventions to make the most out of Hotwire in Laravel (inspired by the turbo-rails gem). There is a comp

Tony Messias 665 Jan 2, 2023
🖖Repository Pattern in Laravel. The package allows to filter by request out-of-the-box, as well as to integrate customized criteria and any kind of filters.

Repository Repository Pattern in Laravel. The package allows to filter by request out-of-the-box, as well as to integrate customized criteria and any

Awes.io 160 Dec 26, 2022
A nice GUI for Laravel Artisan, ready out of the box, configurable and handy for non-CLI experienced developers.

Artisan UI A nice GUI for Laravel Artisan, ready out of the box, configurable and handy for non-CLI experienced developers. Supported commands must be

Pablo Leone 1 Dec 3, 2021
This package provides a console command to convert dynamic JS/CSS to static JS/CSS assets.

Laravel Nova Search This package provides a console command to convert dynamic JS/CSS to static JS/CSS assets. Requirements laravel-mix v6.0+ php 7.3+

Akki Khare 3 Jul 19, 2022
🚀 Zero-downtime deployment out-of-the-box

?? Laravel Deployer Looking for the old Laravel Deployer? Click here. Laravel Deployer is no longer the package it used to be. Since that package was

Loris Leiva 1.6k Dec 31, 2022
Library that offers Input Filtering based on Annotations for use with Objects. Check out 2.dev for 2.0 pre-release.

DMS Filter Component This library provides a service that can be used to filter object values based on annotations Install Use composer to add DMS\Fil

Rafael Dohms 89 Nov 28, 2022
Use Blade templates without the full Laravel framework

blade Use Laravel Blade templates as a standalone component without the full Laravel framework Full documentation is available at http://duncan3dc.git

Craig Duncan 138 Dec 7, 2022
Laravel Real-time chat app demo with React, Laravel Echo, Breeze, Socket.io, Redis, Inertia.js, TailwindCSS stack.

Laravel Real-time Chat App You can build yours from scratch with the following Medium article https://medium.com/@sinan.bekar/build-a-real-time-chat-a

Sinan Bekar 9 Oct 3, 2022