Sprint 19: Social, UX-Verbesserungen, Nerd2Noob-Hilfe
This commit is contained in:
parent
10d30bf565
commit
89d87030a2
18 changed files with 930 additions and 74 deletions
|
|
@ -268,6 +268,37 @@ const UI = (() => {
|
|||
.replace(/"/g, '"');
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------
|
||||
// HELP TOOLTIP — inline ? Badge mit Klick-Tooltip
|
||||
// ----------------------------------------------------------
|
||||
function help(text) {
|
||||
return `<button class="by-help-btn" data-help="${escape(text)}" aria-label="Hilfe" type="button">
|
||||
<svg class="ph-icon" aria-hidden="true" style="width:14px;height:14px">
|
||||
<use href="/icons/phosphor.svg#question"></use>
|
||||
</svg>
|
||||
</button>`;
|
||||
}
|
||||
|
||||
// Event-Delegation für Help-Tooltips — einmalig registrieren
|
||||
document.addEventListener('click', e => {
|
||||
const btn = e.target.closest('.by-help-btn');
|
||||
if (!btn) {
|
||||
document.querySelectorAll('.by-help-tooltip').forEach(t => t.remove());
|
||||
return;
|
||||
}
|
||||
e.stopPropagation();
|
||||
document.querySelectorAll('.by-help-tooltip').forEach(t => t.remove());
|
||||
const tip = document.createElement('div');
|
||||
tip.className = 'by-help-tooltip';
|
||||
tip.textContent = btn.dataset.help;
|
||||
document.body.appendChild(tip);
|
||||
const r = btn.getBoundingClientRect();
|
||||
tip.style.top = (r.bottom + window.scrollY + 6) + 'px';
|
||||
tip.style.left = Math.max(8, r.left + window.scrollX - tip.offsetWidth / 2 + r.width / 2) + 'px';
|
||||
const maxL = window.innerWidth - tip.offsetWidth - 8;
|
||||
if (parseFloat(tip.style.left) > maxL) tip.style.left = maxL + 'px';
|
||||
});
|
||||
|
||||
// Öffentliche API
|
||||
return {
|
||||
toast, modal,
|
||||
|
|
@ -276,7 +307,7 @@ const UI = (() => {
|
|||
emptyState, time,
|
||||
setupPhotoPreview, scrollTop, skeleton,
|
||||
icon: _svgIcon,
|
||||
escape,
|
||||
escape, help,
|
||||
};
|
||||
|
||||
})();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue