Todos los cambios notables en este proyecto serán documentados en este archivo.
El formato está basado en Keep a Changelog, y este proyecto adhiere a Versionado Semántico.
Se han migrado los primeros 4 métodos de la clase Posicionamiento de jQuery a JavaScript vanilla para reducir dependencias y mejorar el rendimiento:
-
posicionamientoInicialX(origen, ele)- Mantiene la misma lógica de validación para posicionamiento superior
-
puedeAbajo(origen, ele)- Migrado de
$(window).height()awindow.innerHeight - Migrado de
$(window).scrollTop()awindow.pageYOffset - Migrado de
$(origen).offset().topaorigen.getBoundingClientRect().top + window.pageYOffset - Migrado de
$(origen).outerHeight()aorigen.offsetHeight - Migrado de
$(ele).outerHeight()aele.offsetHeight - Mantiene la misma lógica de validación para posicionamiento inferior
- Migrado de
-
puedeDerecha(origen, ele)- Migrado de
$(window).width()adocument.documentElement.clientWidth(excluye scrollbar para mayor precisión) - Migrado de
$(origen).offset().leftaorigen.getBoundingClientRect().left + window.pageXOffset - Migrado de
$(origen).width()aorigen.offsetWidth(incluye padding/border para mejor detección de colisiones) - Migrado de
$(ele).width()aele.offsetWidth
- Migrado de
-
puedeIzquierda(origen, ele)- Migrado de
$(origen).offset().leftaorigen.getBoundingClientRect().left + window.pageXOffset - Migrado de
$(ele).width()aele.offsetWidth
- Migrado de
-
reacomodamientoHorizontal(origen, ele)- Migrado de
$(origen).outerWidth()aorigen.offsetWidth - Migrado de
$(ele).outerWidth()aele.offsetWidth
- Migrado de
-
reacomodamientoVertical(origen, ele)- Migrado de
$(origen).outerHeight()aorigen.offsetHeight - Migrado de
$(ele).outerHeight()aele.offsetHeight
- Migrado de
-
topeIzquierda(ele)- Migrado de
$(ele).offset().leftaele.getBoundingClientRect().left + window.pageXOffset
- Migrado de
-
topeArriba(ele)- Migrado de
$(ele).offset().topaele.getBoundingClientRect().top(simplificación)
- Migrado de
-
topeDerecha(ele)- Migrado de
$(window).width()adocument.documentElement.clientWidth - Migrado de
$(ele).offset().leftaele.getBoundingClientRect().left + window.pageXOffset - Migrado de
$(ele).outerWidth()aele.offsetWidth
- Migrado de
-
posicionarArriba(origen, ele)- Migrado de
$(ele).css("top", ...)aele.style.top = ... - Migrado de
$(origen).offset().topaorigen.getBoundingClientRect().top + window.pageYOffset - Migrado de
$(ele).outerHeight()aele.offsetHeight - Migrado de
$(ele).css("left", ...)aele.style.left = ... - Migrado de
$(ele).css({ transform: ... })aele.style.transform = ...
- Migrado de
-
posicionarAbajo(origen, ele)- Migrado de
$(ele).css("top", ...)aele.style.top = ... - Migrado de
$(origen).offset().topaorigen.getBoundingClientRect().top + window.pageYOffset - Migrado de
$(origen).outerHeight()aorigen.offsetHeight - Migrado de
$(ele).css("left", ...)aele.style.left = ... - Migrado de
$(ele).css({ transform: ... })aele.style.transform = ...
- Migrado de
-
posicionarIzquierda(origen, ele)- Migrado de
$(ele).css("left", ...)aele.style.left = ... - Migrado de
$(origen).offset().leftaorigen.getBoundingClientRect().left + window.pageXOffset - Migrado de
$(ele).width()aele.offsetWidth - Migrado de
$(ele).css("top", ...)aele.style.top = ... - Migrado de
$(ele).css({ transform: ... })aele.style.transform = ...
- Migrado de
-
posicionarDerecha(origen, ele)- Migrado de
$(ele).css("left", ...)aele.style.left = ... - Migrado de
$(origen).offset().leftaorigen.getBoundingClientRect().left + window.pageXOffset - Migrado de
$(origen).outerWidth()aorigen.offsetWidth - Migrado de
$(ele).css({ transform: ... })aele.style.transform = ...
- Migrado de
Se ha migrado la clase Desplazar de jQuery a JavaScript vanilla:
ejecutar(origen, ele, ...)- Eliminada dependencia de jQuery
- Migrado de
$(ele).css(...)aele.style.property = ... - Migrado de
$(ele).append(...)aele.appendChild(...) - Migrado de
$("<span>...</span>")adocument.createElement("span")
Se ha migrado la clase ToolTips de jQuery a JavaScript vanilla:
-
General
- Eliminada dependencia de jQuery
- Reemplazo de selectores
$pordocument.querySelectorydocument.querySelectorAll - Reemplazo de manejo de eventos
.on()poraddEventListener
-
Métodos Migrados
eventoResize: Uso dequerySelectorAllyforEachpara eliminar elementosrealizarAparicion: Uso dedatasetpara acceder a data attributesactivar: Uso dedocument.body.appendChildeventoClick: Creación de elementos condocument.createElement,classList.add, yinnerHTMLMouseEnter/MouseLeave: Lógica de creación y eliminación de tooltips sin jQueryinicializar: Iteración de elementos conforEachy asignación de eventosdestroy: Eliminación de event listener global enwindow
-
Mejoras de Refactorización
- Implementación de patrón Singleton para el elemento
tips-complemento, evitando la creación de múltiples overlays en el DOM. - Refactorización de manejadores de eventos a funciones nombradas (
handleClick,handleCompClick,MouseEnter,MouseLeave) para permitir su correcta eliminación en el métododestroy. - El método
destroyahora limpia correctamente todos los event listeners de los elementos y elimina el overlay del DOM.
- Implementación de patrón Singleton para el elemento
Se ha migrado el módulo ComentariosDinamicos de jQuery a JavaScript vanilla:
-
General
- Eliminada dependencia de jQuery completamente
- Reemplazo de selectores
$pordocument.querySelectorydocument.querySelectorAll - Reemplazo de manejo de eventos
.on()poraddEventListener
-
Métodos Migrados
inicializar: Migrado de$(".com-trigger").each()aquerySelectorAll+forEacheventoHover: Migrado de$(e).on({mouseenter, mouseleave})aaddEventListenerindividualeventoClick: Migrado aaddEventListenercon funciones nombradasdestroy: Corrección completa de eliminación de event listeners
-
Bugs Críticos Corregidos
- Bug en
eventoClick: El evento click se añadía incorrectamente al parámetroeen lugar del elemento trigger. Ahora se usathiscorrectamente dentro dehandleClickTrigger. - Contenido faltante: El comentario en modo click no mostraba contenido. Ahora se asigna
comentario.innerHTML = this.dataset.info || "". - Bug en
destroy: Los event listeners se intentaban remover incorrectamente (MouseEnterconclick,MouseLeavesinmouseenter). Ahora se remueven correctamente todos los listeners:click,mouseenter, ymouseleave. - Acumulación de elementos: Se creaban múltiples elementos
.com-complementosin limpiar. Ahora se implementa patrón Singleton.
- Bug en
-
Mejoras de Refactorización
- Implementación de patrón Singleton para el elemento
com-complemento, evitando la creación de múltiples overlays en el DOM. - Refactorización de manejadores de eventos a funciones nombradas (
handleClickTrigger,handleCompClick,handleMouseEnter,handleMouseLeave) para permitir su correcta eliminación en el métododestroy. - El método
destroyahora limpia correctamente todos los event listeners de los elementos y elimina el overlay del DOM. - Añadida validación por defecto:
origen.dataset.pos || "abajo"yorigen.dataset.info || "" - Mejor manejo del elemento complemento: se oculta en lugar de eliminarse en cada click, mejorando el rendimiento.
- Implementación de patrón Singleton para el elemento
Se ha migrado el módulo DropDown de jQuery a JavaScript vanilla:
-
General
- Eliminada dependencia de jQuery completamente
- Reemplazo de selectores
$pordocument.querySelectorydocument.querySelectorAll - Reemplazo de manejo de eventos
.on(),.click(),.hover()poraddEventListener
-
Métodos Migrados
inicializar: Migrado de$(".dropdown-toggle").each()aquerySelectorAll+forEacheventoHover: Migrado de$(e).hover()aaddEventListener("mouseenter")eventoClick: Migrado aaddEventListener("click")con funciones nombradasdestroy: Corrección completa de eliminación de event listenerscrearFlecha: Nueva función helper para crear elementos de flecha
-
Errores de Sintaxis Corregidos (de migración parcial del usuario)
addKeyListener: Corregido aaddEventListener(método correcto)forEachincorrecto: CorregidoforEach("click", e => ...)aforEach((e) => ...)- Parámetro incorrecto en
activar: Cambiado dee.targeta pasar directamente el elemento origen
-
Mejoras de Refactorización
- Implementación de patrón Singleton para el elemento
drop-complemento - Refactorización de manejadores de eventos a funciones nombradas (
handleClickToggle,handleCompClick,handleDropdownClick,handleMouseEnter) - Creación de función helper
crearFlecha(color)para reducir duplicación de código - El método
destroyahora limpia correctamente todos los event listeners y elimina elementos del DOM - Añadida validación de existencia del dropdown antes de mostrarlo:
if (dropdownElement) - Migración completa de manipulación de estilos:
$(e).css()→e.style.property - Migración de creación de elementos:
$("<div>")→document.createElement()
- Implementación de patrón Singleton para el elemento
Se ha migrado el módulo Personalizado de jQuery a JavaScript vanilla:
-
General
- Eliminada dependencia de jQuery completamente
- Reemplazo de selectores
$pordocument.querySelectorydocument.querySelectorAll - Reemplazo de manejo de eventos
.hover(),.click()poraddEventListener
-
Métodos Migrados
inicializar: Migrado de$("." + origen).each()aquerySelectorAll+forEacheventoHover: Migrado de$(e).hover()aaddEventListener("mouseenter")yaddEventListener("mouseleave")eventoClick: Migrado aaddEventListener("click")con funciones nombradaseventos: Migrado de$(e).data("evt")ae.dataset.evtdestroy: Corrección completa de eliminación de event listenerseventoScroll: Nueva función separada para manejar scroll
-
Errores Críticos Corregidos (de migración parcial del usuario)
document.querySelector()mal usado: Se usabaele.appendChild(document.querySelector(e.target.dataset.info))intentando buscar un elemento en el DOM cuando debía obtener el texto del data attribute. Corregido aele.innerHTML = this.dataset.info || ""ele.remove()prematuro: Se eliminaba el elemento justo después de crearlo, antes de mostrarlo. Línea eliminada.comp.show()no existe: Método de jQuery usado en vanilla JS. Corregido acomp.style.display = "block"eventoHoveren jQuery: Función completamente en jQuery. Migrada aaddEventListenercon funciones nombradas.- Variable
arrancarinexistente: Se llamaba a variable no definida en scroll handler. Creada funcióneventoScrollseparada. destroy()con jQuery: Usaba$(origen).off()y$(comp).off(). Migrado aremoveEventListenerespecíficos.- Bug en
inicializar: Comparabaorigen === "sinOrigen"cuando debía serori === "sinOrigen" - Selector incorrecto: Usaba
$("." + origen)cuando debía ser$("." + ori)en inicializar
-
Mejoras de Refactorización
- Implementación de patrón Singleton para el elemento
tips-complemento - Refactorización de manejadores de eventos a funciones nombradas (
handleClickTrigger,handleCompClick,handleMouseEnter,handleMouseLeave) - El método
destroyahora limpia correctamente todos los event listeners y elimina elementos del DOM - Creación de función
eventoScrollseparada para mejor organización - Añadida validación en
eventoResizeyeventoScroll:if (activo && origen && ele) - Migración completa de manipulación de estilos:
$(ele).css()→ele.style.property - Migración de creación de elementos:
$("<div>")→document.createElement() - Corrección de
maxWidth: de270(número) a"270px"(string con unidad)
- Implementación de patrón Singleton para el elemento
Se ha migrado la clase Toast de jQuery a JavaScript vanilla:
-
General
- Eliminada dependencia de jQuery completamente
- Reemplazo de selectores
$pordocument.querySelectorydocument.querySelectorAll - Reemplazo de manipulación del DOM con métodos nativos
-
Métodos Migrados
toast: Migrado completamente a vanilla JavaScript
-
Cambios Específicos
- Migrado de
$(".toast").remove()aquerySelectorAll(".toast").forEach(toast => toast.remove()) - Migrado de
$("<div class='toast'></div>")adocument.createElement("div")+classList.add("toast") - Migrado de
$(ts).append(html)ats.innerHTML = html - Migrado de bucle
forcon$(ts).addClass()aclases.forEach(clase => ts.classList.add(clase)) - Migrado de
$(ts).append("<span>")adocument.createElement("span")+appendChild() - Migrado de
$("body").append(ts)adocument.body.appendChild(ts) - Migrado de
$(ts).css("top", 75)ats.style.top = "75px" - Migrado de
$(e.target).parent().hide(100)a animación CSS conopacityysetTimeout - Corregido:
setInterval→setTimeout(bug: setInterval no se limpiaba)
- Migrado de
-
Mejoras de Refactorización
- Event listener del botón cerrar ahora se añade directamente al crear el botón
- Animación de cierre mejorada con transición CSS
- Corrección de bug: uso de
setTimeouten lugar desetIntervalpara auto-remover - Corrección de unidades CSS:
75→"75px"
- Agregada documentación JSDoc a los métodos migrados de la clase
Posicionamiento
Equivalencias de migración aplicadas:
| jQuery | Vanilla JavaScript | Propósito |
|---|---|---|
$(elemento).offset().left |
elemento.getBoundingClientRect().left + window.pageXOffset |
Posición horizontal absoluta |
$(elemento).offset().top |
elemento.getBoundingClientRect().top + window.pageYOffset |
Posición vertical absoluta |
$(elemento).outerHeight() |
elemento.offsetHeight |
Altura con padding y border |
$(elemento).css(prop, val) |
elemento.style[prop] = val |
Establecer estilos CSS |
$(window).height() |
window.innerHeight |
Altura del viewport |
$(window).scrollTop() |
window.pageYOffset |
Scroll vertical |
Nota: La migración mantiene la compatibilidad funcional completa con la versión anterior usando jQuery.
Historial de versiones anteriores pendiente de documentación