Changeset 54ee51c in Klonkt for src/assets/js/mod/chrome.js
- Timestamp:
- 08/07/2026 01:38:51 PM (5 weeks ago)
- Branches:
- main
- Children:
- 52fc278
- Parents:
- 0475b13
- git-author:
- Robin <roboburr@…> (08/07/2026 01:07:55 PM)
- git-committer:
- roboburr <roboburr@…> (08/07/2026 01:38:51 PM)
- File:
-
- 1 edited
-
src/assets/js/mod/chrome.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/mod/chrome.js
r0475b13 r54ee51c 41 41 }); 42 42 })(); 43 44 // ── de profielkop ────────────────────────────────────────────── 45 // Zat inline in partials/profile-header.ejs, en die partial zit IN de 46 // OOB-chrome -- dus hij kwam bij elke navigatie opnieuw binnen. 47 (function () { 48 if (window.__pcmsFediFollowWired) return; 49 window.__pcmsFediFollowWired = true; 50 function modal() { return document.querySelector('.pf-follow'); } 51 function closeM() { var m = modal(); if (m) m.classList.remove('is-open'); } 52 function go() { 53 var m = modal(); if (!m) return; 54 var inp = m.querySelector('.pf-follow-input'), raw = inp ? inp.value : ''; 55 // Strip a full @user@host handle (and any scheme/path) down to the server host. 56 var server = String(raw || '').trim().replace(/^@?[^@\s]*@/, '').replace(/^https?:\/\//i, '').replace(/\/.*$/, '').trim(); 57 if (!server) { if (inp) inp.focus(); return; } 58 try { localStorage.setItem('pcmsFediServer', server); } catch (e) {} 59 var actor = location.origin + '/ap/users/' + encodeURIComponent(m.getAttribute('data-actor-slug') || ''); 60 location.href = 'https://' + server + '/authorize_interaction?uri=' + encodeURIComponent(actor); 61 } 62 document.addEventListener('click', function (e) { 63 var b = e.target.closest && e.target.closest('.profile-fedi-link'); 64 if (b) { e.preventDefault(); 65 var m = modal(); if (!m) return; 66 m.setAttribute('data-actor-slug', b.getAttribute('data-fedi-actor-slug') || ''); 67 var inp = m.querySelector('.pf-follow-input'); 68 try { if (inp && !inp.value) inp.value = localStorage.getItem('pcmsFediServer') || ''; } catch (e2) {} 69 m.classList.add('is-open'); 70 setTimeout(function () { if (inp) inp.focus(); }, 30); 71 return; 72 } 73 if (e.target.closest && e.target.closest('.pf-follow-go')) { e.preventDefault(); go(); return; } 74 if (e.target.closest && e.target.closest('.pf-follow-cancel')) { e.preventDefault(); closeM(); return; } 75 var open = document.querySelector('.pf-follow.is-open'); 76 if (open && e.target === open) closeM(); /* click on backdrop */ 77 }); 78 document.addEventListener('keydown', function (e) { 79 var m = document.querySelector('.pf-follow.is-open'); if (!m) return; 80 if (e.key === 'Escape') { closeM(); } 81 else if (e.key === 'Enter' && e.target.closest && e.target.closest('.pf-follow')) { e.preventDefault(); go(); } 82 }); 83 })(); 84 85 /* Profile summary: click the avatar to open a modal with photo + details. */ 86 (function () { 87 if (window.__pcmsLightboxWired) return; window.__pcmsLightboxWired = true; 88 function close() { var m = document.querySelector('.pf-summary.is-open'); if (m) m.classList.remove('is-open'); } 89 document.addEventListener('click', function (e) { 90 if (e.target.closest && e.target.closest('.pf-summary-close')) { e.preventDefault(); close(); return; } 91 var open = document.querySelector('.pf-summary.is-open'); 92 if (open && e.target === open) { close(); return; } /* click on backdrop */ 93 var t = e.target.closest && e.target.closest('.profile-photo[data-pf-summary]'); 94 if (!t) return; 95 e.preventDefault(); 96 var root = (t.closest && t.closest('#pcms-chrome')) || document; 97 var modal = root.querySelector('.pf-summary') || document.querySelector('.pf-summary'); 98 if (modal) modal.classList.add('is-open'); 99 }); 100 document.addEventListener('keydown', function (e) { if (e.key === 'Escape') close(); }); 101 })();
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)