Fix: Hilfe-? inline neben 'Dein Plan für heute' statt absolut oben rechts (SW by-v663)

This commit is contained in:
rene 2026-05-03 21:13:10 +02:00
parent 0413483692
commit 1d1171e5f2
6 changed files with 30 additions and 25 deletions

View file

@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
const APP_VER = '662'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VER = '663'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.3.0'; // ← semantische Version, wird bei make release gesetzt
const IS_STAGING = location.hostname === 'staging.banyaro.app';

View file

@ -34,6 +34,7 @@ window.Page_uebungen = (() => {
// ----------------------------------------------------------
// STATS STATE
// ----------------------------------------------------------
let _helpHandle = null; // Rückgabe von UI.pageInfo — für inline Trigger-Button
let _statsData = null; // cached stats from /api/training/stats
let _badgesData = null; // cached badges from /api/achievements
let _exercisesByTab = {}; // aus API geladen
@ -476,7 +477,7 @@ window.Page_uebungen = (() => {
if (_VALID_TABS.has(mapped)) _activeTab = mapped;
}
_render();
UI.pageInfo(_container, {
_helpHandle = UI.pageInfo(_container, {
pageId: 'uebungen',
title: 'Übungsbibliothek',
icon: 'graduation-cap',
@ -747,10 +748,14 @@ window.Page_uebungen = (() => {
<span style="font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--c-text)">
Dein Plan für heute
</span>
<span id="ueb-help-anchor" style="margin-left:auto"></span>
</div>
<div style="display:flex;flex-direction:column;gap:var(--space-2)">
${cards.join('')}
</div>`;
if (_helpHandle) {
document.getElementById('ueb-help-anchor')?.appendChild(_helpHandle.makeTriggerBtn());
}
el.querySelectorAll('.ueb-trainer-btn').forEach(btn => {
btn.addEventListener('click', () => {

View file

@ -313,13 +313,8 @@ const UI = (() => {
});
}
// Kleiner ? Button oben rechts — immer sichtbar
const headerBtn = document.createElement('button');
headerBtn.className = 'pinfo-trigger';
headerBtn.setAttribute('aria-label', 'Hilfe');
headerBtn.innerHTML = _svgIcon('question');
headerBtn.addEventListener('click', _openModal);
container.appendChild(headerBtn);
// Kein automatischer absolut-positionierter Trigger mehr.
// Aufrufer kann openModal() nutzen und den Button selbst platzieren.
// Banner beim ersten Besuch
if (!seen) {
@ -340,6 +335,18 @@ const UI = (() => {
banner.querySelector('.pinfo-banner-more').addEventListener('click', () => { banner.remove(); _openModal(); });
container.insertAdjacentElement('afterbegin', banner);
}
// Inline-Trigger-Button (für Aufrufer zum Einbetten)
function makeTriggerBtn() {
const btn = document.createElement('button');
btn.className = 'pinfo-trigger-inline';
btn.setAttribute('aria-label', 'Hilfe');
btn.innerHTML = _svgIcon('question');
btn.addEventListener('click', _openModal);
return btn;
}
return { openModal: _openModal, makeTriggerBtn };
}
// ----------------------------------------------------------