As of August 2024, Splade is no longer actively maintained. Though we will try to keep up with future Laravel and PHP versions, we discourage using Splade in new projects.

After a period of reflection, we've come full circle and decided to bring the magic of Splade back to Inertia, where it all started. Please check out this new chapter in our journey: Inertia UI.

Event Bus

Splade has a built-in Event Bus that allows for communication between components. Events can be emitted by one component, and listened for by another.

Emit from Vue component

To emit an event, you may call the emit method, for example, in a custom Vue component, on the global $splade instance:

<script>
export default {
methods: {
emitCheckoutEvent() {
this.$splade.emit('checkout');
}
},
};
</script>

If you're using the setup attribute on a <script> block, you may use Vue's inject function.

<script setup>
import { inject } from "vue";
 
const Splade = inject("$splade");
 
function emitCheckoutEvent() {
Splade.emit('checkout');
}
</script>

Additionally, you may pass data along with the event:

Splade.emit('checkout', { id: 1 });

Emit on event

It's also possible to call the emit method from another event. For example, Bridge Components and the Form Component emit error and success events that you can hook into:

<x-splade-form @error="$splade.emit('checkout-failed')">

Listen for events

You may register a listener by using the on method:

this.$splade.on('checkout-failed', function() {
// do something
});

When the callback is rather simple, you may use a Script Component to avoid writing a custom Vue component:

<x-splade-script>
$splade.on('checkout-failed', function() {
// do something
});
</x-splade-script>