Основы
Компонент Offcanvas
позволяет создавать боковые панели.
Вы можете создать Offcanvas
, используя статический метод make()
.
make( Closure|string $title = '', Closure|Renderable|string $content = '', Closure|string $toggler = '', Closure|string|null $asyncUrl = null, iterable $components = [],)
$title
- заголовок боковой панели,$content
- содержимое боковой панели,$toggler
- заголовок для кнопки,$asyncUrl
- url для асинхронного контента,$components
- компоненты
use MoonShine\UI\Components\OffCanvas; OffCanvas::make( 'Подтвердить', static fn() => FormBuilder::make(route('password.confirm')) ->async() ->fields([ Password::make('Пароль')->eye(), ]) ->submit('Подтвердить'), 'Показать панель')
<x-moonshine::off-canvas title="Offcanvas" :left="false"> <x-slot:toggler> Open </x-slot:toggler> {{ fake()->text() }}</x-moonshine::off-canvas>
События
Вы можете показывать или скрывать боковую панель не из компонента через события javascript.
Чтобы иметь доступ к событиям, необходимо установить уникальное имя для боковой панели, используя метод name()
.
use MoonShine\UI\Components\OffCanvas; // ... protected function components(): iterable{ return [ Offcanvas::make( 'Заголовок', 'Содержимое...' ) ->name('my-canvas') ];} // ...
Вызов события через ActionButton
Событие боковой панели может быть вызвано с помощью компонента ActionButton
.
Offcanvas::make( 'Заголовок', 'Содержимое...',) ->name('my-canvas'), ActionButton::make('Показать модальное окно') ->toggleOffCanvs('my-canvas') // или асинхронноActionButton::make( 'Показать панель', '/endpoint') ->async(events: [AlpineJs::event(JsEvent::OFF_CANVAS_TOGGLED, 'my-canvas')])
Вызов события с использованием нативных методов
События могут быть вызваны с использованием нативных методов javascript:
document.addEventListener("DOMContentLoaded", () => { this.dispatchEvent(new CustomEvent("off_canvas_toggled:my-canvas"))})
Вызов события с использованием метода Alpine.js
Или используйте магический метод $dispatch()
из Alpine.js:
this.$dispatch('off_canvas_toggled:my-canvas')
Вызов события с использованием глобального класса MoonShine
MoonShine.ui.toggleOffCanvas('my-canvas')
Открытие/Закрытие
Вы также можете добавить события при открытии/закрытии боковой панели через метод toggleEvents
toggleEvents(array $events, bool $onlyOpening = false, $onlyClosing = false)
ActionButton::make('Open off-canvas')->toggleOffCanvas('my-off-canvas'), OffCanvas::make('My OffCanvas', asyncUrl: '/') ->name('my-off-canvas') ->left() ->toggleEvents([ AlpineJs::event(JsEvent::TOAST, params: ['text' => 'Hello off-canvas']) ]),
Параметры onlyOpening
и onlyClosing
позволяют настраивать, будут ли события срабатывать при открытии и закрытии. По умолчанию оба параметра установлены в TRUE
, что означает, что список событий будет вызываться как при открытии боковой панели, так и при её закрытии.
Состояние по умолчанию
Метод open()
позволяет показать боковую панель при загрузке страницы.
open(Closure|bool|null $condition = null)
OffCanvas::make('Title', 'Content...', 'Show Panel') ->open()
По умолчанию боковая панель будет скрыта при загрузке страницы.
Позиция
По умолчанию боковая панель расположена с правой стороны экрана, метод left()
позволяет расположить панель с левой стороны.
left(Closure|bool|null $condition = null)
OffCanvas::make('Title', 'Content...', 'Show Panel') ->left()
Ширина
Метод wide()
компонента OffCanvas
позволяет сделать боковую панель более широкой.
wide(Closure|bool|null $condition = null)
$condition
- условие выполнения метода.
OffCanvas::make('Title', 'Content...', 'Show Panel') ->wide()
Метод full()
устанавливает максимальную ширину для боковой панели.
full(Closure|bool|null $condition = null)
$condition
- условие выполнения метода.
OffCanvas::make('Title', 'Content...', 'Show Panel') ->full()
Асинхронность
OffCanvas::make('Заголовок', '', 'Показать панель', asyncUrl: '/endpoint'),
Запрос будет отправлен один раз, но если вам нужно отправлять запрос при каждом открытии, то используйте метод alwaysLoad
OffCanvas::make(...) ->alwaysLoad(),
Атрибуты переключателя
Метод togglerAttributes()
позволяет установить дополнительные атрибуты для переключателя $toggler
.
togglerAttributes(array $attributes)
OffCanvas::make('Заголовок', 'Содержимое...', 'Показать панель') ->togglerAttributes([ 'class' => 'mt-2' ]),