Fix: Hilfe-? inline neben 'Dein Plan für heute' statt absolut oben rechts (SW by-v663)
This commit is contained in:
parent
0413483692
commit
1d1171e5f2
6 changed files with 30 additions and 25 deletions
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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', () => {
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue