Feature: User-Feedback, Regen-Uhrzeit im Wetter-Chip, Admin-Karten klickbar (SW by-v833)
- Feedback-Modal im Settings (Kategorie + Text → E-Mail an support@banyaro.app) - Wetter-Chip (Karte + Gassi-Score): zeigt nächste Regenstunde ab ≥20% Wahrscheinlichkeit - Gassi-Score-Chip: zweizeilige Wetter-Info, linksbündig, volle Chipbreite - Admin-Übersicht: Stat-Karten anklickbar → navigiert direkt zum jeweiligen Tab - ui.js: visualViewport-Listener hebt Modal über Tastatur (alle Modals) - api.js: Pydantic v2 Array-Detail korrekt als Fehlermeldung extrahiert - map.js: Wetter-Fallback über watchPosition wenn getCurrentPosition scheitert - Update-Loop-Fix: index.html ?v= synchron mit APP_VER halten (alle 4 Stellen)
This commit is contained in:
parent
d18c592ef0
commit
70af387147
12 changed files with 211 additions and 42 deletions
|
|
@ -79,15 +79,34 @@ const UI = (() => {
|
|||
|
||||
document.getElementById('modal-container').appendChild(overlay);
|
||||
document.documentElement.classList.add('modal-open');
|
||||
_current = { overlay, onClose };
|
||||
|
||||
// Tastatur auf Mobilgeräten: Modal nach oben schieben wenn Keyboard erscheint
|
||||
let _vvCleanup = null;
|
||||
const vv = window.visualViewport;
|
||||
if (vv) {
|
||||
const adjust = () => {
|
||||
const kb = Math.max(0, window.innerHeight - vv.height - vv.offsetTop);
|
||||
overlay.style.paddingBottom = (kb + 16) + 'px';
|
||||
};
|
||||
vv.addEventListener('resize', adjust);
|
||||
vv.addEventListener('scroll', adjust);
|
||||
_vvCleanup = () => {
|
||||
vv.removeEventListener('resize', adjust);
|
||||
vv.removeEventListener('scroll', adjust);
|
||||
overlay.style.paddingBottom = '';
|
||||
};
|
||||
}
|
||||
|
||||
_current = { overlay, onClose, _vvCleanup };
|
||||
|
||||
return overlay.querySelector('.modal');
|
||||
}
|
||||
|
||||
function close() {
|
||||
if (!_current) return;
|
||||
const { onClose } = _current;
|
||||
const { onClose, _vvCleanup } = _current;
|
||||
onClose?.();
|
||||
_vvCleanup?.();
|
||||
_current.overlay.remove();
|
||||
document.documentElement.classList.remove('modal-open');
|
||||
_current = null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue