Construindo Popovers, Alertas e Toasts com Blueprint UI em React

Introdução ao Blueprint UI

O Blueprint UI é um conjunto de ferramentas React amplamente utilizado, oferecendo uma coleção de componentes e estilos padronizados para desenvolver aplicações web modernas. Um dos seus pontos fortes reside na facilidade com que permite criar elementos como popovers, alertas e toasts, essenciais para fornecer informações e feedback aos utilizadores de forma eficaz.

Instalação do Blueprint UI

Antes de começar a usar o Blueprint UI, é necessário instalá-lo. Este processo pode ser realizado através de qualquer gestor de pacotes de sua preferência.

Para instalar usando o npm, o gestor de pacotes JavaScript, execute o seguinte comando no seu terminal:

 npm install @blueprintjs/core

Após a instalação, é preciso importar os arquivos CSS da biblioteca para o seu projeto:

 @import "normalize.css";
@import "@blueprintjs/core/lib/css/blueprint.css";
@import "@blueprintjs/icons/lib/css/blueprint-icons.css";

Com esta importação, os estilos visuais do Blueprint UI serão integrados aos componentes que a biblioteca oferece, garantindo uma aparência consistente e profissional.

Criação de Popovers com Blueprint UI

Popovers são elementos flutuantes que aparecem quando o utilizador interage com um elemento, seja passando o rato ou clicando. Servem para apresentar informações adicionais ou opções relevantes ao utilizador.

Para implementar popovers em aplicações React usando o Blueprint UI, o componente Popover2 deve ser instalado.

Para instalar o Popover2, utilize o seguinte comando no terminal:

 npm install --save @blueprintjs/popover2

Não se esqueça de importar a folha de estilo deste pacote no seu arquivo CSS:

 @import "@blueprintjs/popover2/lib/css/blueprint-popover2.css";

Após a importação, o componente Popover2 estará pronto para uso na criação de popovers na sua aplicação.

Exemplo de implementação:

 import React from "react";
import { Button } from "@blueprintjs/core";
import { Popover2 } from "@blueprintjs/popover2";

function App() {
  const popoverContent = (
    <div>
      <h3>Título do Popover</h3>
      <p>Este é o conteúdo dentro do popover.</p>
    </div>
  );

  return (
    <div>
      <Popover2 content={popoverContent}>
        <Button intent="success" text="Clique Aqui" />
      </Popover2>
    </div>
  );
}

export default App;

Este código demonstra como criar um popover utilizando o componente Popover2. A variável `popoverContent` contém a estrutura JSX do conteúdo do popover.

O componente Popover2 utiliza o conteúdo definido em `popoverContent` através da propriedade `content`. A propriedade `content` especifica o que é apresentado no popover. Neste exemplo, o Popover2 envolve um componente Button, o que significa que o popover surgirá quando o botão for clicado.

O popover resultante terá uma aparência inicial simples, como demonstrado aqui:

Para personalizar o estilo do conteúdo do popover, adicione uma propriedade `className` ao código JSX do popover:

 const popoverContent = (
  <div className="popover">
    <h3>Título do Popover</h3>
    <p>Este é o conteúdo dentro do popover.</p>
  </div>
);

Em seguida, defina a classe CSS correspondente no seu arquivo de estilos:

 .popover {
  padding: 1rem;
  background-color: #e2e2e2;
  font-family: cursive;
}

Com o estilo CSS aplicado, o popover terá uma aparência mais personalizada e agradável:

O componente Popover2 possui várias propriedades que permitem configurá-lo de acordo com as suas necessidades, como `popoverClassName`, `onInteraction`, `isOpen`, `minimal` e `placement`.

A propriedade `placement` define a posição preferencial do popover em relação ao elemento de origem. Os valores disponíveis são:

  • auto
  • auto-start
  • auto-end
  • top
  • top-start
  • top-end
  • bottom
  • bottom-start
  • bottom-end
  • right
  • right-start
  • right-end
  • left
  • left-start
  • left-end

Com `popoverClassName`, é possível atribuir um nome de classe CSS ao elemento popover. É necessário criar previamente a classe no arquivo CSS para usar esta propriedade.

Por exemplo:

 .custom-popover {
  background-color: #e2e2e2;
  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
  border-radius: 12px;
  padding: 1rem;
}

Após criar a classe CSS, aplique-a ao componente Popover2 usando a propriedade `popoverClassName`:

 <Popover2
content={popoverContent}
placement="bottom-end"
popoverClassName="custom-popover"
minimal={true}
>
<Button intent="success" text="Clique Aqui" />
</Popover2>

A propriedade `minimal` controla o estilo do popover, aceitando valores booleanos. Quando definida como `true`, o popover terá um estilo mais simples, sem seta e com uma aparência de caixa básica.

Criação de Alertas

Alertas são notificações exibidas na tela para informar o usuário sobre informações ou ações importantes, como mensagens de erro, sucesso ou avisos.

A criação de alertas no Blueprint UI é similar ao processo em outras bibliotecas como Chakra UI. O componente Alert será utilizado para criar alertas na aplicação React.

Exemplo:

 import React from "react";
import { Alert, Button } from "@blueprintjs/core";

function App() {
  const [isOpen, setIsOpen] = React.useState(false);

  const handleOpen = () => {
    setIsOpen(true);
  };

  const handleClose = () => {
    setIsOpen(false);
  };

  return (
    <div>
      <Alert isOpen={isOpen} onClose={handleClose} confirmButtonText="Fechar">
        <p>Esta é uma mensagem de alerta</p>
      </Alert>

      <Button text="Mostrar Alerta" intent="success" onClick={handleOpen} />
    </div>
  );
}

export default App;

Este código mostra como importar o componente Alert do pacote `@blueprintjs/core`. O componente Alert renderiza a mensagem de alerta na tela, usando as propriedades `isOpen`, `onClose` e `confirmButtonText`.

A propriedade `isOpen` controla a visibilidade do alerta. `true` mostra o alerta e `false` o oculta. `onClose` é uma função que é executada quando o usuário fecha o alerta.

A propriedade `confirmButtonText` define o texto do botão de confirmação.

A notificação de alerta resultante terá a seguinte aparência:

Criação de Toasts com Blueprint UI

Toasts são notificações que aparecem na tela para informar o usuário sobre informações ou eventos relevantes, similares aos alertas, mas menos intrusivos e com desaparecimento automático.

Para criar um toast em aplicações React com Blueprint UI, use o componente OverlayToaster. Este componente cria uma instância Toaster usada para gerar toasts individuais.

Exemplo:

 import React from "react";
import { OverlayToaster, Button } from "@blueprintjs/core";

const toasterInstance = OverlayToaster.create({ position: "top-right" });

function App() {
  const showToast = () => {
    toasterInstance.show({
      message: "Este é um toast",
      intent: "primary",
      timeout: 3000,
      isCloseButtonShown: false,
      icon: "bookmark",
    });
  };

  return (
    <div>
      <Button text="Mostrar Toast" intent="success" onClick={showToast} />
    </div>
  );
}

export default App;

O código utiliza o método `OverlayToaster.create` para criar a instância do toaster, definindo sua posição através da propriedade `position`.

A função `showToast` usa o método `show` da instância `toasterInstance` para exibir o toast quando chamada. O método `show` recebe um objeto com as propriedades `message`, `intent`, `timeout`, `isCloseButtonShown` e `icon`.

A propriedade `message` define o texto do toast, enquanto `intent` especifica o tipo de toast, afetando seu estilo.

O `timeout` controla o tempo de exibição do toast. `icon` define o ícone exibido no toast. E, com `isCloseButtonShown`, é possível controlar a exibição do botão de fechar no sistema toast.

Ao clicar no botão, o código gerará um toast semelhante à imagem abaixo:

Se o objetivo é criar notificações de sistema atraentes na aplicação React, o Blueprint UI é uma ótima opção, oferecendo uma variedade de componentes predefinidos que facilitam a criação de notificações consistentes com o estilo da aplicação.

Para projetos menores, onde todos os recursos do Blueprint UI não são necessários, o React Toastify surge como uma alternativa leve para criar notificações atraentes.

Aprimorando a Experiência do Usuário

Este artigo detalhou como criar popovers, alertas e toasts em aplicações React utilizando o Blueprint UI. Esses componentes são cruciais para fornecer feedback e informações aos utilizadores, melhorando a experiência geral. Com as informações fornecidas, é possível criar esses elementos com personalização mínima e eficiência.