Introdução
O Easy Notification System é uma biblioteca JavaScript abrangente para gerenciamento avançado de notificações em aplicações web. Ela oferece recursos poderosos, como priorização, filtragem por categoria, segmentação de usuários, analytics, customização visual, agendamento e persistência de notificações. Com ela, você pode exibir notificações dinâmicas, persistentes ou agendadas, além de ajustar comportamentos, animações, cores, sons e ações do usuário.
Principais funcionalidades do Easy Notification System:
- Exibição simultânea de múltiplas notificações com controle de concorrência.
- Filtragem por categorias e segmentação de usuários.
- Customização completa de cores, estilos, animações e sons.
- Prioridade, fila e agendamento de notificações.
- Interações do usuário, como clique, hover e fechamento manual.
- Métricas e eventos de analytics integrados.
- Suporte a notificações nativas (do navegador) individualmente ou globalmente.
- Persistência de notificações usando localStorage.
- Gerenciamento de duplicatas e estratégias de fallback.
- Extensível e fácil de integrar com outras partes da aplicação.
Características Principais
- Suporte a Várias Notificações: Controle quantas notificações são exibidas simultaneamente e gerencie filas com tamanho máximo configurável.
- Filtragem e Categorias: Agrupe notificações por categoria e aplique filtros para exibir somente as que desejar. Defina prioridades por categoria para controlar a ordem de exibição.
- Segmentação de Usuários: Defina segmentos de usuários e mostre notificações específicas baseadas no perfil do usuário.
- Prioridade e Fila: Ajuste a ordem de exibição com base em prioridade e categorias, permitindo uma gestão eficiente das notificações.
- Agendamento: Agende notificações para o futuro ou exiba-as em momentos específicos utilizando timestamps.
- Estilos, Animações e Sons Customizáveis: Personalize cores, animações (fade, slide, scale, flip), estilos para o wrapper da notificação e sons para criar experiências únicas.
customAnimations
permite injetar@keyframes
CSS. - Interações e Persistência: Adicione botões de fechamento, clique na notificação, persistência (sem tempo limite, não mostra barra de tempo) e reações ao hover. Controle auto-dismissal baseado em cliques e movimentos do mouse.
- Analytics Integrado: Colete métricas sobre exibição, cliques, tempo de interação e progresso das notificações.
- Notificações Nativas: Opção de exibir notificações nativas do navegador para certas notificações ou de forma global, com suporte a ícones.
- Persistência de Notificações: Mantenha notificações persistentes usando localStorage, garantindo que elas permaneçam mesmo após recarregamentos da página.
- Gerenciamento de Duplicatas e Fallback: Controle para evitar notificações duplicadas e estratégias de fallback para casos de falha na exibição.
Instalação
Para instalar o Easy Notification System, basta incluir o script JavaScript no seu HTML:
<script src="https://cdn.alphasystem.dev/plugins/easy-notification-system/latest/script-min.js"></script>
Após a inclusão do script, uma instância padrão será criada automaticamente e estará disponível como window.EasyNotificationInstance
. Você pode utilizá-la diretamente para configurar e gerenciar notificações:
// Utiliza a instância padrão
const notifier = window.EasyNotificationInstance;
Configuração
O Easy Notification System oferece diversas opções de configuração. Você pode atualizar a configuração da instância padrão a qualquer momento utilizando o método updateConfig(newOptions)
ou modificando diretamente window.EasyNotificationInstance.cfg
.
- enabled: Ativa ou desativa o sistema de notificações (Padrão:
true
). - defaultDisplayTime: Tempo padrão de exibição em milissegundos (Padrão:
5000
). - maxConcurrent: Máximo de notificações exibidas simultaneamente (Padrão:
15
). - animationDuration: Duração da animação em milissegundos (Padrão:
300
). - maxQueueSize: Tamanho máximo da fila de notificações. Se excedido, a mais antiga é descartada (Padrão:
1000
). - allowDuplicate: Permite notificações duplicadas (mesmo título, mensagem e tipo) (Padrão:
false
). - defaultType: Tipo padrão da notificação (ex: 'info', 'warning', 'success', 'danger'). Padrão:
'info'
. - defaultCategory: Categoria padrão das notificações (Padrão:
'general'
). - segmentMatching: Habilita a correspondência de segmentos de usuário (Padrão:
true
). - priorityEnabled: Habilita a ordenação por prioridade na fila (Padrão:
true
). - analyticsEnabled: Registra eventos de analytics (Padrão:
true
). - categoryFilteringEnabled: Permite filtrar notificações por categoria (Padrão:
true
). - userInteractionTracking: Acompanha interações do usuário como cliques (Padrão:
true
). - maxRetriesOnDisplayError: (Não implementado ativamente no fluxo de reexibição) Número máximo de tentativas de reexibição em caso de erro (Padrão:
3
). - containerId: ID personalizado para o container das notificações. Se não definido, um ID é gerado (Padrão:
null
). - animationType: Tipo de animação padrão ('fade', 'slide', 'scale', 'flip'). Padrão:
'fade'
. - customAnimations: Objeto contendo definições de
@keyframes
CSS customizadas. Ex:{ myKeyframe: '@keyframes myKeyframe { from { opacity: 0; } to { opacity: 1; } }' }
. Essas keyframes são injetadas e podem ser usadas emcustomStyles
. - customStyles: Objeto contendo estilos CSS customizados para serem aplicados ao wrapper de cada notificação e ao container. Ex:
{ background: '#333', color: '#fff' }
. - fallbackStrategy: (Não implementado ativamente) Estratégia de fallback em caso de erro na exibição (Padrão:
'queue'
). - timeIncrementOnRetry: (Não implementado ativamente) Incremento de tempo em milissegundos para tentativas de reexibição (Padrão:
1000
). - categoryPriorities: Objeto definindo prioridades numéricas para categorias específicas. Ex:
{ critical: 100, normal: 0 }
. - userSegments: (Usado internamente, segmentos são definidos via
defineSegment
) Objeto definindo segmentos de usuário. - globalFilters: Array de funções de filtro globais. Cada função recebe o objeto da notificação e retorna
true
para exibir oufalse
para bloquear. - autoDismissOnClick: Fecha a notificação ao clicar (exceto no botão de fechar e se não for persistente) (Padrão:
true
). - autoDismissOnHoverOut: Fecha a notificação ao mover o mouse para fora dela (se não for persistente) (Padrão:
false
). - hoverPause: Pausa o temporizador de auto-fechamento quando o mouse está sobre a notificação (se não for persistente e tiver tempo de exibição) (Padrão:
true
). - retryOnFailure: (Não implementado ativamente) Tenta reexibir notificações em caso de falha (Padrão:
true
). - position: Posição do container de notificações ('top-right', 'top-left', 'bottom-right', 'bottom-left'). Padrão:
'top-right'
. - useNativeNotifications: Se
true
, tenta exibir todas as notificações como nativas do navegador, a menos que uma notificação individual especifiquenativeNotification: false
. Sefalse
, notificações só serão nativas se especificaremnativeNotification: true
(Padrão:false
). - defaultSound: URL do som padrão para notificações (Padrão:
null
). - showTimerBar: Exibe uma barra de temporizador na notificação (se tiver
displayTime > 0
e não for persistente) (Padrão:true
).
// Exemplo de atualização de configuração
window.EasyNotificationInstance.updateConfig({
maxConcurrent: 5,
defaultType: 'success',
position: 'bottom-left',
animationType: 'slide',
autoDismissOnHoverOut: true,
customStyles: { // Aplicado ao container e a cada wrapper de notificação
borderRadius: '10px',
boxShadow: '0 0 15px rgba(0,0,0,0.5)'
},
customAnimations: {
myCustomFadeIn: '@keyframes myCustomFadeIn { from { opacity: 0; } to { opacity: 1; } }'
}
});
Uso e Integração
Após configurar, você pode criar e exibir notificações facilmente utilizando a instância padrão window.EasyNotificationInstance
:
- Criar Notificação: Use
createNotification
passando título, mensagem, tipo, etc. Este método retorna o ID da notificação criada. - Notificações Persistentes: Defina
persistent: true
para manter a notificação visível até ser fechada manualmente. Notificações persistentes não possuem barra de tempo e não são fechadas automaticamente porhoverPause
ouautoDismissOnHoverOut
. - Agendar Notificações: Use
scheduleNotification
para exibir notificações no futuro. - Categorias e Segmentos: Ajuste
category
esegments
para filtrar quem vê as notificações. - Notificações Nativas por Notificação:
- Se a configuração global
useNativeNotifications
fortrue
, uma notificação será nativa a menos que tenhanativeNotification: false
. - Se
useNativeNotifications
forfalse
(padrão), uma notificação só será nativa se tivernativeNotification: true
.
- Se a configuração global
- Fechamento Manual: Use
dismissNotification(notificationId)
oumarkAsFinished(notificationId, reason)
. - Controle da Barra de Progresso: Utilize métodos como
increaseProgress
,decreaseProgress
esetProgress
para manipular a barra de progresso das notificações que têmhasProgressBar: true
. - Definir Dados do Usuário: Use
setUserData
para definir dados do usuário que serão usados na segmentação. - Definir Segmentos de Usuário: Use
defineSegment
para criar segmentos personalizados. - Gerenciar Categorias: Use
allowCategory
eblockCategory
para controlar quais categorias de notificações são exibidas. - Gerenciar Prioridades de Categoria: Use
setCategoryPriority
para definir prioridades específicas para categorias. - Eventos: Use
on
para escutar eventos etriggerEvent
para disparar eventos customizados. - Analytics: Use
getAnalytics
para obter logs de analytics eclearAnalytics
para limpar os logs. - Requisição de Permissão: Use
requestPermission
para solicitar permissão para notificações nativas. - Reproduzir Som: Use
playSound
para reproduzir um som específico. - Redirecionamento: A propriedade
redirect
em uma notificação fará com que o usuário seja redirecionado para a URL especificada quando a notificação expirar pelodisplayTime
(não se aplica a persistentes ou fechadas manualmente/por clique).
Exemplo básico:
const notifier = window.EasyNotificationInstance;
const notificationId = notifier.createNotification({
title: 'Olá!',
message: 'Esta é uma notificação de teste.',
type: 'info',
displayTime: 3000
});
console.log('ID da Notificação:', notificationId);
Notificação persistente (sem tempo limite):
const persistentNotifId = notifier.createNotification({
title: 'Atenção',
message: 'Esta notificação só fechará se você clicar no X.',
type: 'warning',
persistent: true
});
Notificação nativa individual (considerando useNativeNotifications: false
globalmente):
const nativeNotifId = notifier.createNotification({
title: 'Notificação do Sistema',
message: 'Esta notificação é nativa do navegador.',
nativeNotification: true,
icon: '/path/to/icon.png' // Opcional
});
Controle da Barra de Progresso:
const progressNotifId = notifier.createNotification({
title: 'Processando',
message: 'O processo está em andamento...',
type: 'info',
hasProgressBar: true,
progress: 10, // Progresso inicial
persistent: true, // Para que não feche sozinha enquanto o progresso ocorre
onClick: (n) => console.log('Notificação clicada:', n)
});
let currentProgress = 10;
const progressInterval = setInterval(() => {
currentProgress += 10;
if (currentProgress > 100) {
clearInterval(progressInterval);
notifier.markAsFinished(progressNotifId, 'progress_complete');
} else {
notifier.setProgress(progressNotifId, currentProgress, `Progresso: ${currentProgress}%`);
}
}, 1000);
Agendar uma notificação para 10 segundos no futuro:
const futureTime = Date.now() + 10000;
const scheduledNotifId = notifier.scheduleNotification({
title: 'Lembrete',
message: 'Esta notificação aparecerá em 10 segundos.',
type: 'warning',
time: futureTime
});
console.log('ID da Notificação Agendada:', scheduledNotifId);
Reproduzir Som em uma Notificação:
const soundNotifId = notifier.createNotification({
title: 'Alerta Sonoro',
message: 'Esta notificação reproduz um som específico.',
type: 'danger',
sound: 'https://example.com/sounds/alert.mp3' // URL do som
});
// Reproduzir um som específico manualmente
notifier.playSound('https://example.com/sounds/notification.mp3');
Referência da API
Métodos Principais
- createNotification(params): Cria e adiciona uma notificação à fila.
- Parâmetros (objeto
params
):title
(string): Título da notificação.message
(string): Mensagem principal.type
(string): Tipo ('info', 'warning', 'success', 'danger', etc.). Default:cfg.defaultType
.category
(string): Categoria. Default:cfg.defaultCategory
.priority
(number): Prioridade numérica. Default:0
.displayTime
(number): Tempo de exibição em ms. Default:cfg.defaultDisplayTime
.segments
(array): Array de strings de nomes de segmentos. Default:[]
.onClick
(function): Callback ao clicar na notificação (recebe o objeto da notificação).onFinished
(function): Callback ao fechar/finalizar (recebe{ id, reason }
).persistent
(boolean): Setrue
, não fecha automaticamente. Default:false
.nativeNotification
(boolean): Define se esta notificação deve tentar ser nativa (comportamento depende decfg.useNativeNotifications
).hasProgressBar
(boolean): Setrue
, mostra uma barra de progresso. Default:false
.progress
(number): Progresso inicial (0-100) sehasProgressBar
fortrue
. Default:0
.animationType
(string): Tipo de animação ('fade', 'slide', etc.). Default:cfg.animationType
.position
(string): Posição ('top-right', etc.). Default:cfg.position
.autoDismissOnHoverOut
(boolean): Sobrescrevecfg.autoDismissOnHoverOut
.sound
(string|null): URL do som.null
para nenhum som,undefined
para usarcfg.defaultSound
.showTimerBar
(boolean): Sobrescrevecfg.showTimerBar
.redirect
(string): URL para redirecionar ao expirar por tempo (não persistente).icon
(string): URL do ícone (usado principalmente por notificações nativas).
- Retorno:
string
- ID da notificação criada, ounull
se o sistema estiver desabilitado.
- Parâmetros (objeto
- scheduleNotification(params): Agenda uma notificação.
- Parâmetros: Mesmo objeto
params
decreateNotification
, mais:time
(number): Timestamp (ms) para quando a notificação deve ser enfileirada. Default:Date.now() + 5000
.
- Retorno:
string
- ID da notificação agendada, ounull
se o sistema estiver desabilitado.
- Parâmetros: Mesmo objeto
- setUserData(data): Define dados do usuário para segmentação.
- Parâmetros:
data
(object) - Dados do usuário.
- Parâmetros:
- defineSegment(name, criteriaFn): Define um segmento de usuário.
- Parâmetros:
name
(string) - Nome do segmento;criteriaFn
(function) - Função(userData) => boolean
.
- Parâmetros:
- allowCategory(cat): Permite exibir notificações de uma categoria.
- Parâmetros:
cat
(string) - Nome da categoria.
- Parâmetros:
- blockCategory(cat): Bloqueia notificações de uma categoria.
- Parâmetros:
cat
(string) - Nome da categoria.
- Parâmetros:
- setCategoryPriority(cat, priorityValue): Ajusta prioridade de uma categoria.
- Parâmetros:
cat
(string) - Nome da categoria;priorityValue
(number) - Valor da prioridade.
- Parâmetros:
- on(event, callbackFn): Escuta eventos do sistema.
- Parâmetros:
event
(string) - Nome do evento;callbackFn
(function) - Função callback.
- Parâmetros:
- triggerEvent(event, data): Dispara eventos customizados.
- Parâmetros:
event
(string) - Nome do evento;data
(any) - Dados associados.
- Parâmetros:
- getAnalytics(): Retorna logs de analytics.
- Retorno:
array
- Lista de eventos registrados.
- Retorno:
- clearAnalytics(): Limpa logs de analytics.
- dismissNotification(id): Fecha a notificação com o ID fornecido (sinônimo de
markAsFinished(id, 'manual')
).- Parâmetros:
id
(string) - ID da notificação.
- Parâmetros:
- increaseProgress(id, amount, newMessage): Aumenta a barra de progresso.
- Parâmetros:
id
(string);amount
(number);newMessage
(string, opcional).
- Parâmetros:
- decreaseProgress(id, amount, newMessage): Diminui a barra de progresso.
- Parâmetros:
id
(string);amount
(number);newMessage
(string, opcional).
- Parâmetros:
- setProgress(id, value, newMessage): Define o valor da barra de progresso.
- Parâmetros:
id
(string);value
(number, 0-100);newMessage
(string, opcional).
- Parâmetros:
- playSound(soundUrl): Reproduz um som.
- Parâmetros:
soundUrl
(string) - URL do áudio. - Retorno:
Promise<void>
- Resolve quando a reprodução inicia ou falha.
- Parâmetros:
- requestPermission(): Solicita permissão para notificações nativas.
- Retorno:
Promise<string>
- Resolve com o status da permissão ('granted', 'denied', 'default', 'unsupported', 'pending', 'error').
- Retorno:
- markAsFinished(id, reason): Marca a notificação como finalizada, fechando-a.
- Parâmetros:
id
(string);reason
(string, opcional, default: 'manual').
- Parâmetros:
- clearAllNotifications(): Remove todas as notificações ativas e limpa a fila.
- updateConfig(newOptions): Atualiza a configuração global da instância.
- Parâmetros:
newOptions
(object) - Objeto com as configurações a serem mescladas.
- Parâmetros:
- getNotificationById(id): Retorna o objeto de uma notificação armazenada pelo ID.
- Parâmetros:
id
(string). - Retorno:
object|undefined
- O objeto da notificação ouundefined
se não encontrada.
- Parâmetros:
- getAllActiveNotifications(): Retorna um objeto com todas as notificações atualmente visíveis na tela.
- Retorno:
object
- Chaves são IDs das notificações, valores são os objetos das notificações.
- Retorno:
- getQueue(): Retorna uma cópia da fila de notificações pendentes.
- Retorno:
array
- Array de objetos de notificação.
- Retorno:
Eventos Disponíveis (para on(event, callback)
)
show
: Disparado quando uma notificação (DOM ou Nativa) está prestes a ser exibida (após passar pelos filtros e estar pronta para renderizar). Dados:{ id, category, type, native }
.click
: Disparado quando o usuário clica no corpo da notificação (não no botão de fechar). Dados:{ id }
.hide
: Disparado quando uma notificação (DOM ou Nativa) é fechada/ocultada. Dados:{ id, user (boolean), native (boolean) }
.displayed
: Disparado quando uma notificação DOM efetivamente aparece na tela (após animação de entrada). Dados:{ id }
.finished
: Disparado quando uma notificação é completamente removida do sistema (após animação de saída e limpeza). Dados:{ id, reason }
.progress_increase
: Disparado quando a barra de progresso é aumentada. Dados:{ id, amount, newProgress }
.progress_decrease
: Disparado quando a barra de progresso é diminuída. Dados:{ id, amount, newProgress }
.progress_set
: Disparado quando a barra de progresso é definida para um valor específico. Dados:{ id, value }
.
Resolução de Problemas
- Notificações Não Aparecem:
- Verifique
window.EasyNotificationInstance.cfg.enabled
. - Verifique se
maxConcurrent
não está zero. - Confira os filtros de categoria (
allowCategory
,blockCategory
) e secategoryFilteringEnabled
estátrue
. - Verifique os segmentos de usuário (
defineSegment
,setUserData
) e sesegmentMatching
estátrue
. - Verifique
globalFilters
na configuração. - Abra o console do navegador para mensagens de erro ou logs do sistema.
- Verifique
- Eventos Não Disparam: Certifique-se de registrar o listener com
on()
antes que o evento ocorra. Verifique seanalyticsEnabled
ouuserInteractionTracking
estão habilitados para eventos relacionados. autoDismissOnHoverOut
Não Funciona: Garanta que a opçãoautoDismissOnHoverOut
esteja habilitada na notificação ou globalmente, e que a notificação não sejapersistent
.- Animações Não Aplicam: Verifique a propriedade
animationType
.customAnimations
na configuração serve para injetar definições de@keyframes
. Para usá-las, você precisaria aplicar essas animações viacustomStyles
ou CSS externo, poisanimationType
só funciona com os tipos pré-definidos ('fade', 'slide', 'scale', 'flip'). - Notificações Nativas Não Aparecem:
- Certifique-se de que o usuário concedeu permissão (
Notification.permission === 'granted'
). UserequestPermission()
. - Verifique a configuração
useNativeNotifications
e a propriedadenativeNotification
da notificação individual. - Alguns navegadores/SO podem ter restrições adicionais.
- Certifique-se de que o usuário concedeu permissão (
- Barra de Tempo (
showTimerBar
) Não Aparece: Assegure-se de que a notificação temdisplayTime > 0
, não épersistent: true
, eshowTimerBar
estátrue
. - Controle da Barra de Progresso Não Funciona: Verifique se a notificação possui
hasProgressBar: true
e se o ID fornecido aos métodos de progresso está correto. - Persistência de Notificações Não Funciona: Verifique se a notificação está definida como
persistent: true
e se o navegador suportalocalStorage
e não está em modo privado que o bloqueie. - Problemas com Segmentação: Confirme se os segmentos estão definidos corretamente com
defineSegment
e sesetUserData
foi chamado com os dados corretos antes de criar a notificação. - Falha na Reprodução de Sons: Assegure-se de que a URL do som está correta, acessível (CORS), e que o formato do áudio é suportado. Interações do usuário com a página podem ser necessárias para habilitar a reprodução automática de áudio.
- Redirecionamento não ocorre: O redirecionamento via
redirect
só acontece para notificações não persistentes que expiram pelodisplayTime
. Não ocorre se fechadas manualmente, por clique, ou se são persistentes.
Exemplos de Código
Exemplo Básico
const notifier = window.EasyNotificationInstance;
const notificationId = notifier.createNotification({
title: 'Olá!',
message: 'Esta é uma notificação de teste.',
type: 'info',
displayTime: 3000
});
console.log('ID da Notificação:', notificationId);
Notificação com Segmentação de Usuário
const notifier = window.EasyNotificationInstance;
notifier.defineSegment('premiumUser', (userData) => userData && userData.isPremium === true);
notifier.setUserData({ isPremium: true, id: 123 });
const premiumNotifId = notifier.createNotification({
title: 'Acesso Premium!',
message: 'Obrigado por ser um usuário premium!',
type: 'success',
segments: ['premiumUser']
});
console.log('ID da Notificação Premium:', premiumNotifId);
Agendamento de Notificação
const notifier = window.EasyNotificationInstance;
const futureTime = Date.now() + 10000; // 10 segundos no futuro
const scheduledNotifId = notifier.scheduleNotification({
title: 'Lembrete Agendado',
message: 'Esta notificação foi programada para aparecer agora.',
type: 'warning',
time: futureTime
});
console.log('ID da Notificação Agendada:', scheduledNotifId);
Notificação Persistente com Fechamento Manual
const notifier = window.EasyNotificationInstance;
const notificacaoImportanteId = notifier.createNotification({
title: 'Ação Necessária',
message: 'Clique no X para fechar esta notificação persistente.',
type: 'danger',
persistent: true,
onClick: (n) => console.log('Notificação persistente clicada:', n.id)
});
// Exemplo de fechamento manual após um tempo (ou por outra ação)
setTimeout(() => {
notifier.dismissNotification(notificacaoImportanteId);
console.log('Notificação persistente fechada programaticamente.');
}, 30000);
Usar Animações Customizadas (Definindo Keyframes)
const notifier = window.EasyNotificationInstance;
// 1. Definir keyframes via configuração
notifier.updateConfig({
customAnimations: {
mySpinIn: `@keyframes mySpinIn {
0% { transform: rotate(-360deg) scale(0); opacity: 0; }
100% { transform: rotate(0deg) scale(1); opacity: 1; }
}`,
myFadeOutQuick: `@keyframes myFadeOutQuick {
to { opacity: 0; transform: scale(0.8); }
}`
}
});
// 2. Para usar esses keyframes, você pode aplicá-los via customStyles
// na configuração global (afetando todas as notificações) ou
// precisaria de uma forma de aplicar estilos por notificação (não diretamente via params.customStyles).
// Este exemplo mostra como aplicar um estilo global que usa a keyframe.
notifier.updateConfig({
customStyles: { // Estilo aplicado a todos os wrappers de notificação
animationName: 'mySpinIn', // Usa a keyframe definida em customAnimations
animationDuration: '0.7s',
animationTimingFunction: 'ease-out'
// Nota: Isso aplicará 'mySpinIn' como a animação de entrada para TODAS as notificações.
// A animação de saída ainda será controlada por 'animationType'.
// Para um controle mais fino, seria necessário CSS mais específico ou
// modificações na lógica de animação da biblioteca.
}
});
notifier.createNotification({
title: 'Animação Customizada!',
message: 'Esta notificação usa keyframes customizados para entrada (globalmente).',
type: 'info',
// animationType: 'fade' // A animação de SAÍDA ainda usaria 'fadeOut'
});
Nota sobre Animações Customizadas: A configuração customAnimations
injeta as definições de @keyframes
no CSS. A propriedade animationType
da notificação seleciona um par de animações de entrada/saída de um conjunto pré-definido na biblioteca ('fade', 'slide', 'scale', 'flip'). Para usar suas keyframes customizadas de forma integrada com o ciclo de vida de entrada/saída, você precisaria de uma lógica mais avançada ou aplicar os estilos de animação diretamente via customStyles
(o que pode sobrescrever apenas uma parte do ciclo de animação padrão).
Reproduzir Som em uma Notificação
const notifier = window.EasyNotificationInstance;
const soundNotifId = notifier.createNotification({
title: 'Alerta Sonoro!',
message: 'Esta notificação tem um som customizado.',
type: 'danger',
sound: 'https://cdn.jsdelivr.net/npm/ion-sound@3.0.7/sounds/water_droplet.mp3'
});
// Para testar o som padrão (se configurado)
// notifier.updateConfig({ defaultSound: 'https://cdn.jsdelivr.net/npm/ion-sound@3.0.7/sounds/bell_ring.mp3' });
// notifier.createNotification({ title: 'Som Padrão', message: 'Testando som padrão.'});