Mejorar las interacciones del usuario en Laravel Livewire con wire:confirm

  • Publicado el 25 septiembre, 2024
  • Palabras: 816

Como desarrolladores de Livewire, a menudo necesitamos agregar una capa adicional de confirmación antes de ejecutar acciones críticas en nuestras aplicaciones. La directiva wire:confirm de Livewire proporciona una solución elegante a este requisito común. En esta publicación, exploraremos cómo usar esta función para crear interfaces más fáciles de usar y seguras.

Mejorar las interacciones del usuario en Laravel Livewire con wire:confirm

#Como funciona wire:confirm

 

La directiva wire:confirm de Livewire permite agregar fácilmente un cuadro de diálogo de confirmación antes de que se realice una acción. Esto resulta particularmente útil para operaciones irreversibles o acciones con consecuencias significativas.

 

#Uso básico

 

Comencemos con un ejemplo sencillo:

 

<button wire:click="deletePost" wire:confirm="¿Estás seguro/a de eliminar esta publicación?">
    Delete Post
</button>

 

En este caso, cuando un usuario hace clic en el botón "Eliminar publicación", verá un cuadro de diálogo de confirmación del navegador con el mensaje especificado antes de que se llame al método deletePost.

 

#Mensajes de confirmación dinámicos

 

Puede hacer que sus mensajes de confirmación sean más dinámicos mediante el uso de propiedades del componente:

 

<button wire:click="deletePost({{ $post->id }})" 
        wire:confirm="¿Estás seguro/a que desear eliminar '{{ $post->title }}'?">
    Delete Post
</button>

 

#Combinación con otras funciones de Livewire

 

wire:confirm funciona bien con otras directivas Livewire:

 

<button wire:click="submitForm"
        wire:loading.attr="disabled"
        wire:confirm="Esta acción se no puede elimianr. ¿Deseas continuar?">
    Submit
</button>

 

Este ejemplo combina la confirmación con los estados de carga.

 

#Ejemplo práctico: Sistema de gestión de usuarios

 

Consideremos un ejemplo más completo de un sistema de gestión de usuarios:

 

// app/Http/Livewire/UserManagement.php
class UserManagement extends Component
{
    public $users;

    public function mount()
    {
        $this->users = User::all();
    }

    public function deleteUser($userId)
    {
        $user = User::findOrFail($userId);
        $user->delete();
        $this->users = User::all();
        session()->flash('message', 'Usuario eliminaro correctamente.');
    }

    public function suspendUser($userId)
    {
        $user = User::findOrFail($userId);
        $user->suspended = true;
        $user->save();
        $this->users = User::all();
        session()->flash('message', 'Usuario suspendido correctamente.');
    }

    public function render()
    {
        return view('livewire.user-management');
    }
}

// resources/views/livewire/user-management.blade.php
<div>
    @foreach ($users as $user)
        <div>
            {{ $user->name }}
            <button wire:click="deleteUser({{ $user->id }})"
                    wire:confirm="¿Estás seguro/a que desear eliminar permanentemente el usuario {{ $user->name }}?">
                Delete
            </button>
            <button wire:click="suspendUser({{ $user->id }})"
                    wire:confirm="¿Estás seguro/a que desar suspender al usuario {{ $user->name }}?">
                Suspend
            </button>
        </div>
    @endforeach
</div>

 

En este ejemplo, hemos agregado cuadros de diálogo de confirmación para eliminar y suspender usuarios, lo que proporciona una capa adicional de seguridad para estas acciones importantes.

 

Prácticas recomendadas

 

  • Mensajes claros: escriba mensajes de confirmación claros y concisos que expliquen las consecuencias de la acción.
  • Contextualización: adapte sus mensajes de confirmación a la acción y el contexto específicos.
  • Uso uniforme: utilice las confirmaciones de manera uniforme en toda la aplicación para tipos de acciones similares.
  • Evite el uso excesivo: si bien las confirmaciones son útiles, su uso excesivo puede provocar "fatiga de confirmación". Resérvelas para acciones importantes o irreversibles.
  • Accesibilidad: asegúrese de que sus cuadros de diálogo de confirmación sean accesibles, incluso para los usuarios que dependen de lectores de pantalla.

 

#Personalización del cuadro de diálogo de confirmación

 

Si bien wire:confirm utiliza el cuadro de diálogo de confirmación predeterminado del navegador, puedes crear modales de confirmación personalizados para una experiencia de usuario más personalizada:

 

<div x-data="{ showConfirmModal: false }">
    <button @click="showConfirmModal = true">Eliminar Usuario</button>

    <div x-show="showConfirmModal" class="modal">
        <p>¿Estás seguro/a de eliminar a este usuario?</p>
        <button wire:click="deleteUser" @click="showConfirmModal = false">Eliminar</button>
        <button @click="showConfirmModal = false">Cancelar</button>
    </div>
</div>

 

Este enfoque que utiliza Alpine.js permite cuadros de diálogo de confirmación más personalizados y con más estilo.

 

#Conclusion

 

La directiva wire:confirm de Livewire ofrece una forma sencilla pero eficaz de agregar cuadros de diálogo de confirmación a las acciones críticas de su aplicación. Al implementar esta función, puede mejorar significativamente la experiencia del usuario y evitar acciones accidentales que podrían tener consecuencias graves.

Antonio Jenaro

Antonio Jenaro

Web Developer

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión