Septiembre 2026
abrir arriba': una fila
// cerca de la parte superior de la pantalla tiene poco espacio
// en AMBAS direcciones, y ese caso dejaba el menu cortado por
// arriba en vez de por abajo. Se compara cual lado tiene mas
// espacio de verdad, y ademas se acota la altura del menu a lo
// que realmente cabe (con scroll interno) para que nunca quede
// recortado sin poder verse completo.
const openUpward = spaceBelow < 300 && spaceAbove > spaceBelow;
const maxHeight = Math.max((openUpward ? spaceAbove : spaceBelow) - 16, 120);
const vertical = openUpward
? `bottom: ${window.innerHeight - rect.top + 8}px;`
: `top: ${rect.bottom + 8}px;`;
const horizontal = true
? `left: ${rect.left}px;`
: `right: ${window.innerWidth - rect.right}px;`;
style = vertical + horizontal + `max-height: ${maxHeight}px;`;
open = ! open
">
abrir arriba': una fila
// cerca de la parte superior de la pantalla tiene poco espacio
// en AMBAS direcciones, y ese caso dejaba el menu cortado por
// arriba en vez de por abajo. Se compara cual lado tiene mas
// espacio de verdad, y ademas se acota la altura del menu a lo
// que realmente cabe (con scroll interno) para que nunca quede
// recortado sin poder verse completo.
const openUpward = spaceBelow < 300 && spaceAbove > spaceBelow;
const maxHeight = Math.max((openUpward ? spaceAbove : spaceBelow) - 16, 120);
const vertical = openUpward
? `bottom: ${window.innerHeight - rect.top + 8}px;`
: `top: ${rect.bottom + 8}px;`;
const horizontal = true
? `left: ${rect.left}px;`
: `right: ${window.innerWidth - rect.right}px;`;
style = vertical + horizontal + `max-height: ${maxHeight}px;`;
open = ! open
">
Pendientes 1
Atrasadas 1
Pendientes atrasadas
LAB-TEST-202289
Poda de formación
Fundo Huels · Todo el campo · Aplicaciones
abrir arriba': una fila
// cerca de la parte superior de la pantalla tiene poco espacio
// en AMBAS direcciones, y ese caso dejaba el menu cortado por
// arriba en vez de por abajo. Se compara cual lado tiene mas
// espacio de verdad, y ademas se acota la altura del menu a lo
// que realmente cabe (con scroll interno) para que nunca quede
// recortado sin poder verse completo.
const openUpward = spaceBelow < 300 && spaceAbove > spaceBelow;
const maxHeight = Math.max((openUpward ? spaceAbove : spaceBelow) - 16, 120);
const vertical = openUpward
? `bottom: ${window.innerHeight - rect.top + 8}px;`
: `top: ${rect.bottom + 8}px;`;
const horizontal = false
? `left: ${rect.left}px;`
: `right: ${window.innerWidth - rect.right}px;`;
style = vertical + horizontal + `max-height: ${maxHeight}px;`;
open = ! open
">
No comenzada
0%
Atrasada por 10 día(s)
Inicio: 17-09-2026 ·
Término: 19-09-2026 ·
Demo Cupo 3