Make
The Offcanvas decorator allows you to create sidebars.
You can create Offcanvas using the static make()
method.
make(Closure|string $title, Closure|View|string $content, Closure|string $toggler = '', Closure|string|null $asyncUrl = '')
-
$title
- sidebar title, -
$content
- sidebar content, -
$toggler
- title for button, -
$asyncUrl
- url for asynchronous content
use MoonShine\Components\FormBuilder;use MoonShine\Components\Offcanvas;use MoonShine\Fields\Password; //... public function components(): array{ return [ Offcanvas::make( 'Confirm', static fn() => FormBuilder::make(route('password.confirm')) ->async() ->fields([ Password::make('Password')->eye(), ]) ->submit('Confirm'), 'Show canvas' ) ];} //...
Events
You can show or hide a sidebar not from a component through javascript events.
To have access to events, you must set a unique name for the sidebar using the name()
method.
use MoonShine\Components\Offcanvas; //... public function components(): array{ return [ Offcanvas::make( 'Title', 'Content...' ) ->name('my-canvas') ];} //...
calling an event via ActionButton
The sidebar event can be triggered using the ActionButton
component.
use MoonShine\Components\Offcanvas; //... public function components(): array{ return [ Offcanvas::make( 'Title', 'Content...', ) ->name('my-canvas'), ActionButton::make( 'Show canvas', '/endpoint' ) ->async(events: ['offcanvas-toggled-my-canvas']) ];} //...
calling an event using native methods
Events can be triggered using native javascript methods:
document.addEventListener("DOMContentLoaded", () => { this.dispatchEvent(new Event("offcanvas-toggled-my-canvas"))})
calling an event using the Alpine.js method
Or use the magic $dispatch()
method from Alpine.js:
this.$dispatch('offcanvas-toggled-my-canvas')
Default state
The open()
method allows you to show the sidebar when the page loads.
open(Closure|bool|null $condition = null)
use MoonShine\Components\Offcanvas; //... public function components(): array{ return [ Offcanvas::make('Title', 'Content...', 'Show canvas') ->open() ];} //...
By default, the sidebar will be hidden when the page loads.
Position
By default, the sidebar is located on the right side of the screen, the left()
method allows you to position the panel on the left side.
left(Closure|bool|null $condition = null)
use MoonShine\Components\Offcanvas; //... public function components(): array{ return [ Offcanvas::make('Title', 'Content...', 'Show canvas') ->left() ];} //...
Toggler attributes
The toggler Attributes()
method allows you to set additional attributes for the $toggler
toggle.
togglerAttributes(array $attributes)
use MoonShine\Components\Offcanvas; //... public function components(): array{ return [ Offcanvas::make('Title', 'Content...', 'Show canvas') ->togglerAttributes([ 'class' => 'mt-2' ]), ];} //...