Package Exports
- adonisjs-livewire
- adonisjs-livewire/build/providers/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (adonisjs-livewire) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
AdonisJS Livewire (WIP)
A front-end framework for AdonisJS
Getting Started
This package is available in the npm registry.
npm install adonisjs-livewireNext, configure the package by running the following command.
node ace configure adonisjs-livewireConfiguration
Enable ALS in config/app.ts https://docs.adonisjs.com/guides/async-local-storage#usage
// config/app.ts
export const http: ServerConfig = {
useAsyncLocalStorage: true,
};now you can use this.ctx in your Livewire components.
Create a Livewire component
node ace make:livewire CounterBasic Usage
// views/welcome.edge
<!DOCTYPE html>
<html lang="en">
<head>
@livewireStyles
</head>
<body>
@livewire('counter') or @livewire('Counter')
@livewire('search-users') or @livewire('SearchUsers')
@livewireScripts
</body>
</html>Component as Page
Create layout file in resources/views/layouts/main.edge
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title ?? 'My App' }}</title>
@livewireStyles
</head>
<body>
@!section('body')
@livewireScripts
</body>
</html>// start/routes.ts
Route.livewire("/", "Counter"); // App/Livewire/Counter.ts
Route.livewire("/", "counter", [ // TODO: remove array support
{
initialCounter: 10,
},
]); // args
Route.livewire("/", "counter", { initialCounter: 10 }); // args[0] shorthand
Route.livewire("/search-users", "search-users"); // App/Livewire/SearchUsers.ts
Route.livewire("/search-users"); // App/Livewire/SearchUsers.ts
Route.livewire("/search-users", "search-users.index"); // App/Livewire/SearchUsers/Index.tsRegistering Custom Components
You may manually register components using the Livewire::component method. This can be useful if you want to provide Livewire components from a composer package. Typically this should be done in the ready method of a service provider.
import type { ApplicationContract } from '@ioc:Adonis/Core/Application'
import { Component } from 'adonisjs-livewire'
export default class AppProvider {
constructor(protected app: ApplicationContract) {
}
public async ready() {
const { Livewire } = await import('@ioc:Adonis/Addons/Livewire')
Livewire.component('custom-component', class extends Component {
public title = ''
public mount({ title }) {
this.title = title
}
async render() {
return "<div>{{ title }}</div>"
}
})
}
}
Now, applications with your package installed can consume your component in their views like so:@livewire('custom-component', {
title: 'My Component'
})
// or
<livewire:custom-component title="My Component" />