JavaScript

11 set, 2024

Alertas bonitos, responsivos e customizados com o SweetAlert2

Publicidade

Alertas bonitos, responsivos e customizados com o SweetAlert2

Quando estamos falando de desenvolvimento web, há praticamente duas coisas que todo(a) programador(a) provavelmente já fez:

  • Usar console.log() para debugar o código;
  • Usar o alert() para exibir mensagens na tela.

Apesar de ambos funcionarem bem e nos ajudarem a desenvolver nossos sistemas web, elas são ferramentas inadequadas para usarmos como forma de se comunicar com os usuários.

SweetAlert2

É por esse motivo que quero te apresentar o SweetAlert2, uma biblioteca JavaScript que nos ajuda na criação de alertas que sejam bonitos, responsivos e customizados, tudo isso sem nenhuma outra dependência! Eu tenho quase certeza que você já deve ter visto a janelinha dele em algum site por aí mesmo sem saber que era gerada por essa biblioteca 👀

Além das instruções que daremos abaixo, você também pode acompanhar todos os passos que serão feitos assistindo o vídeo abaixo:

Alertas bonitos e responsivos com o SweetAlert 2

SweetAlert2 – Uso simples

O seu uso é super simples. Primeiramente, é necessário importá-lo para o seu projeto:

npm install sweetalert2 # npm

# ou via cdn

<script src="<https://cdn.jsdelivr.net/npm/sweetalert2@11>"></script>

Uma vez importado, utilizamos o objeto Swal para disparar os alertas. O alerta mais simples é criado apenas passando como parâmetro a mensagem que desejamos exibir, como no exemplo a seguir, onde apenas exibimos a mensagem “Olá mundo!”. Como neste exemplo aqui:

<button>Olá mundo!</button>

 const button = document.getElementsByTagName("button")[0];

button.addEventListener("click", () => {

  Swal.fire("Hello World!");

})

Para tornar as coisas mais interessantes, podemos utilizar alguns dos alertas padrões, como no exemplo abaixo, onde exibimos uma mensagem de erro e de sucesso apenas especificando o seu tipo (bem semelhante ao que temos no bootstrap) na chamada do método:

<button id="success">Sucesso</button>

<button id="error">Erro</button>

 const successBtn = document.getElementById("success");

const errorBtn = document.getElementById("error");

successBtn.addEventListener("click", () => {

  Swal.fire("Boa!", "Deu tudo certo!", "success");

});

errorBtn.addEventListener("click", () => {

  Swal.fire("Oh no...", "Algo deu errado!", "error");

});

Outras possibilidades

O Sweet Alert 2 é capaz de muito mais. No exemplo a seguir, criamos um alerta com diversas configurações, incluindo título, texto, tipo, opções de exibição para botões de confirmação e cancelamento, além de ações personalizadas para cada resposta do usuário:

<button>Exibir mensagem</button>

 const button = document.getElementsByTagName("button")[0];

button.addEventListener("click", () => {

  Swal.fire({

    title: "Você está certo disso?",

    text: "Esta pergunta vale um milhão de reais!",

    type: "warning",

    showCancelButton: true,

    confirmButtonColor: "#3085d6",

    cancelButtonColor: "#d33",

    confirmButtonText: "Sim, tenho certeza!",

    cancelButtonText: "Melhor eu parar..."

  }).then((result) => {

    if (result.value) {

      Swal.fire(

        "Parabéns!",

        "Você acertou e ganhou um milhão de reais!",

        "success"

      )

    }

  })

});

Bem bacana, né? E a verdade é que as possibilidades são infinitas. Todos estes exemplos e muito mais podem ser encontrados diretamente no site da ferramenta. E sabe o melhor de tudo? A biblioteca tem integração com as principais bibliotecas de front-end do mercado! Ou seja, o React, Angular e Vue!

Só pra te dar um exemplo, vamos criar rapidamente um projeto com o Vite e usar a biblioteca lá.

npm create vite@latest

npm install --save sweetalert2 sweetalert2-react-content

Já podemos adicionar no componente!

import Swal from 'sweetalert2';

import withReactContent from 'sweetalert2-react-content';

 

import reactLogo from './assets/react.svg'

import viteLogo from '/vite.svg'

import './App.css'

 

function App() {

  function handleMessage() {

    const MySwal = withReactContent(Swal);

 

    MySwal.fire({

      title: "The Internet?",

      text: "That thing is still around?",

      icon: "question"

    });

  }

 

  return (

    <>

      <div>

        <a href="<https://vitejs.dev>" target="_blank">

          <img src={viteLogo} className="logo" alt="Vite logo" />

        </a>

        <a href="<https://react.dev>" target="_blank">

          <img src={reactLogo} className="logo react" alt="React logo" />

        </a>

      </div>

      <h1>Vite + React</h1>

      <div className="card">

        <button onClick={handleMessage}>

          aperta ai!

        </button>

        <p>

          Edit <code>src/App.jsx</code> and save to test HMR

        </p>

      </div>

      <p className="read-the-docs">

        Click on the Vite and React logos to learn more

      </p>

    </>

  )

}

 

export default App

Conclusão

Eu poderia continuar mostrando diversos exemplos do que a biblioteca é capaz, mas no próprio site oficial há uma série de outros exemplos, tais como alertas com:

  • Requisições AJAX;
  • Layout customizado (fundo, imagem, cores, etc);
  • Posicionamento diferente (repare que por padrão ele coloca sempre no meio, independente do tamanho do seu device!);
  • Fechamento automático (auto close timer);
  • E muito mais!

Todas as demais configurações possíveis, tipos de input, métodos, eventos e afins estão disponíveis no site também.

LEIA TAMBÉM