first commit
This commit is contained in:
78
resources/views/components/offcanvas/basic.blade.php
Normal file
78
resources/views/components/offcanvas/basic.blade.php
Normal file
@ -0,0 +1,78 @@
|
||||
@php
|
||||
use Illuminate\Support\Str;
|
||||
@endphp
|
||||
|
||||
@props([
|
||||
'id' => '', // ID único para el offcanvas
|
||||
'title' => '', // Título del offcanvas
|
||||
'position' => 'end', // Posición: 'start', 'end', 'top', 'bottom'
|
||||
'size' => 'md', // Tamaño: sm, md, lg, xl
|
||||
'backdrop' => true, // Si se debe mostrar backdrop
|
||||
'wireIgnore' => true, // Ignorar eventos wire (Livewire)
|
||||
'listener' => '', // Nombre del listener para reload
|
||||
'tagName' => '', // Etiqueta del formHelpers
|
||||
])
|
||||
|
||||
@php
|
||||
$offcanvasClasses = "offcanvas offcanvas-{$position}";
|
||||
|
||||
$offcanvasSize = match ($size) {
|
||||
'sm' => 'offcanvas-sm',
|
||||
'lg' => 'offcanvas-lg',
|
||||
'xl' => 'offcanvas-xl',
|
||||
default => '',
|
||||
};
|
||||
|
||||
$helperTag = Str::kebab($tagName);
|
||||
@endphp
|
||||
|
||||
<div
|
||||
class="{{ $offcanvasClasses }} {{ $offcanvasSize }}"
|
||||
tabindex="-1"
|
||||
id="{{ $id }}"
|
||||
aria-labelledby="{{ $id }}Label"
|
||||
{{ $wireIgnore ? 'wire:ignore.self' : '' }}
|
||||
data-bs-backdrop="{{ $backdrop ? 'true' : 'false' }}">
|
||||
|
||||
{{-- HEADER --}}
|
||||
<div class="offcanvas-header border-bottom">
|
||||
<h5 class="offcanvas-title">{{ $title }}</h5>
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Cerrar"></button>
|
||||
</div>
|
||||
|
||||
{{-- BODY --}}
|
||||
<div class="offcanvas-body p-4">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
|
||||
{{-- FOOTER SLOT OPCIONAL --}}
|
||||
@if (isset($footer))
|
||||
<div class="offcanvas-footer border-top p-3">
|
||||
{{ $footer }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@push('page-script')
|
||||
<script>
|
||||
// Evento para inicializar el formulario cuando se carga la página
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
const register{{ $tagName }}FormEvents = () => {
|
||||
document.addEventListener("refresh-{{ $helperTag }}-offcanvas", () => {
|
||||
window.formHelpers['{{ $helperTag }}'].refresh();
|
||||
});
|
||||
|
||||
var myOffcanvas = document.getElementById('{{ $id }}')
|
||||
|
||||
myOffcanvas.addEventListener('show.bs.offcanvas', function () {
|
||||
setTimeout(() => window.formHelpers['{{ $helperTag }}'].reloadOffcanvas(), 20);
|
||||
});
|
||||
}
|
||||
|
||||
window.formHelpers = window.formHelpers || {};
|
||||
window.formHelpers['{{ $helperTag }}'] = new FormCanvasHelper('{{ $id }}', @this);
|
||||
|
||||
register{{ $tagName }}FormEvents();
|
||||
});
|
||||
</script>
|
||||
@endpush
|
Reference in New Issue
Block a user