Al igual que los tooltips y comentarios los tips personalizados son elementos dinámicos
provenientes de la dependencia Dynamics-Tips v3.0.0 y permiten
definir estilos y elementos personalizados para asociarlos a algún elemento del DOM.
Muestra
En este caso es ligeramente más complicado utilizar estos elementos ya que es necesario
definir los estilos y elementos que se mostrarán como así también la información
a mostrar.
Como veremos a lo largo de los apartados hay dos maneras de inicializar estos elementos,
por un lado solo definiremos estilos, y por otro lado definiremos elementos completos
que se posicionarán de manera adecuada utilizando el kernel de Dynamics-Tips.
// Inicializamos los tips personalizados indicando la clase o el
// origen de los elementos disparadores
// Es importante respetar este formato para que funcione correctamente
// Esta es una de las dos formas, no es la única
BS.PersonalizadoInit({ori: "disparador"})
// Nótese que seteamos el attr data-info de manera dinámica
// lo cual nos permitirá cargar el elemento dinámico en el attr
// data-info del disparador
document.getElementById("boton1").setAttribute("data-info",
`
Bodystyle Framework
Librería CSS completa para construir interfaces modernas y responsivas con facilidad.
`
)
Advertencia
No es recomendable inicializar varias veces los tips personalizados en la misma página
ya que cuenta con dos formas, que permitirán realizar cosas distintas. Si se inicializan
varias veces puede ocasionar conflictos entre ambas formas.
Posición
Al igual que los demás elementos dinámicos de Bodystyle, los tips personalizados
permiten definir la posición en la cual se mostrarán. Por defecto se mostrarán
en la posición "bottom" (abajo) pero podemos definir cualquiera de las otras posiciones.
Este tip personalizado se muestra en la posición ${boton.getAttribute("data-pos")}.
`
)
})
Evento Click
Al igual que los tooltips y comentarios, los tips personalizados
pueden ser disparados mediante el evento click. Para ello
debemos inicializarlos con la opción "evento" seteada en "click".
Este tip personalizado se muestra al hacer click en el botón.
`
)
Segunda forma
La segunda forma va a necesitar que definamos un/unas clase/s CSS
que permitirán establecer el estilo que rodea a la información
del tip personalizado. Luego debemos inicializar los tips personalizados
indicando la clase o el origen de los elementos disparadores.
/* Definimos una clase personalizada para el tip */
.mi-tip-personalizado {
background-color: #333;
color: #fff;
padding: 10px;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
font-size: 14px;
max-width: 200px;
}
// Nótese como se envía el segundo parámetro "ele" con la clase personalizada
// que definimos en el CSS para el tip personalizado
// Es importante respetar el nombre de los parámetros (ori y ele) para que funcione correctamente
BS.PersonalizadoInit({ori: "disparador", ele: "mi-tip-personalizado"});
Los tips personalizados deben ser accesibles para todos los usuarios, incluyendo aquellos
que utilizan tecnologías de asistencia como lectores de pantalla. A continuación se presentan
las mejores prácticas para garantizar que tus tips sean completamente accesibles.
Atributos ARIA
Utiliza atributos ARIA para describir correctamente el propósito del elemento disparador
y relacionarlo con el tip personalizado.
Navegación por Teclado
Asegúrate de que los elementos disparadores sean navegables por teclado. Utiliza tabindex
si es necesario y proporciona retroalimentación visual clara.
Presiona Enter o Espacio
Contraste y Legibilidad
Garantiza suficiente contraste entre el texto y el fondo del tip. Usa colores que cumplan
con las pautas WCAG AA o AAA.
Si utilizas iconos o símbolos en los tips, incluye siempre una descripción textual clara.
Evita depender únicamente de colores para transmitir información.
⚠️Advertencia Importante
Descripción clara y concisa del mensaje de advertencia.
Ejemplo Completo Accesible
// Inicializa los tips con opciones accesibles
BS.PersonalizadoInit({ori: "disparador"});
const btn = document.getElementById("btn-info");
// Actualiza aria-expanded cuando se muestra/oculta el tip
btn.addEventListener("mouseenter", () => {
btn.setAttribute("aria-expanded", "true");
});
btn.addEventListener("mouseleave", () => {
btn.setAttribute("aria-expanded", "false");
});
// Soporte para teclado (Enter y Espacio)
btn.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
btn.click();
}
});
// Contenido con estructura semántica
btn.setAttribute("data-info",
`
Información
Este tip utiliza atributos ARIA y soporta navegación por teclado.
`
);
Recomendación
Prueba tus tips personalizados con herramientas de accesibilidad como WAVE, Axe, o lectores
de pantalla como NVDA o JAWS para asegurar que funcionan correctamente para todos los usuarios.
Destruir
Es posible destruir los tips personalizados inicializados en la página
mediante la función BS.PersonalizadoDestroy().