feat(chat): menú tres puntos con Limpiar chat y Cerrar sesión
- Reemplaza botón suelto de logout por dropdown (Alpine.js) con dos opciones - limpiarChat(): limpia mensajes visibles y cierra conversación actual - cerrarSesion(): ya existía, se mantiene igual - Cierra el dropdown al hacer clic fuera (x-click.outside) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
4a58b800dc
commit
c3f9984a9d
@@ -191,6 +191,16 @@ class PublicChat extends Component
|
||||
]);
|
||||
}
|
||||
|
||||
public function limpiarChat(): void
|
||||
{
|
||||
// Cierra la conversación actual y abre una nueva en la próxima interacción
|
||||
$this->mensajes = [];
|
||||
$this->convId = null;
|
||||
$this->flujo = '';
|
||||
$this->flujoData = [];
|
||||
session()->forget('chat_conv_id');
|
||||
}
|
||||
|
||||
public function cerrarSesion(): void
|
||||
{
|
||||
session()->forget(['chat_user_id', 'chat_conv_id']);
|
||||
|
||||
Regular → Executable
+29
-7
@@ -182,13 +182,35 @@
|
||||
<p class="text-white text-sm font-bold">${{ number_format($saldoUsuario) }}</p>
|
||||
</div>
|
||||
@endif
|
||||
{{-- Cerrar sesión --}}
|
||||
<button wire:click="cerrarSesion" title="Cerrar sesión"
|
||||
class="flex-shrink-0 ml-1 p-2 rounded-full hover:bg-white/10 transition text-[#8696a0] hover:text-red-400">
|
||||
<svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke-width="1.8" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75" />
|
||||
</svg>
|
||||
</button>
|
||||
{{-- Menú de opciones --}}
|
||||
<div class="flex-shrink-0 ml-1 relative" x-data="{ open: false }" @click.outside="open = false">
|
||||
<button @click="open = !open"
|
||||
class="p-2 rounded-full hover:bg-white/10 transition text-[#8696a0]">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
||||
<circle cx="12" cy="5" r="1.5"/>
|
||||
<circle cx="12" cy="12" r="1.5"/>
|
||||
<circle cx="12" cy="19" r="1.5"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div x-show="open" x-transition
|
||||
class="absolute right-0 top-10 w-44 bg-[#233138] rounded-lg shadow-xl z-50 overflow-hidden">
|
||||
<button wire:click="limpiarChat" @click="open = false"
|
||||
class="w-full flex items-center gap-3 px-4 py-3 text-sm text-white hover:bg-white/10 transition text-left">
|
||||
<svg class="w-4 h-4 text-[#8696a0]" fill="none" viewBox="0 0 24 24" stroke-width="1.8" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
|
||||
</svg>
|
||||
Limpiar chat
|
||||
</button>
|
||||
<div class="border-t border-white/10"></div>
|
||||
<button wire:click="cerrarSesion" @click="open = false"
|
||||
class="w-full flex items-center gap-3 px-4 py-3 text-sm text-red-400 hover:bg-white/10 transition text-left">
|
||||
<svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke-width="1.8" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75" />
|
||||
</svg>
|
||||
Cerrar sesión
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user