diff --git a/docs/static/probe/render.js b/docs/static/probe/render.js index 3fe44b5..3c82044 100644 --- a/docs/static/probe/render.js +++ b/docs/static/probe/render.js @@ -249,6 +249,30 @@ window.ProbeRender = (function () { } document.addEventListener('keydown', onKey); }); + + // Click handler for truncated expected pills + document.addEventListener('click', function (e) { + var target = e.target.closest('[data-full-expected]'); + if (!target) return; + var full = target.getAttribute('data-full-expected'); + var html = ''; + html += '
Expected
'; + html += '' + escapeAttr(full) + ''; + var overlay = document.createElement('div'); + overlay.className = 'probe-modal-overlay'; + var modal = document.createElement('div'); + modal.className = 'probe-modal'; + modal.style.maxWidth = '420px'; + modal.style.whiteSpace = 'normal'; + modal.style.minWidth = '200px'; + modal.innerHTML = html; + overlay.appendChild(modal); + document.body.appendChild(overlay); + modal.querySelector('.probe-modal-close').addEventListener('click', function () { overlay.remove(); }); + overlay.addEventListener('click', function (ev) { if (ev.target === overlay) overlay.remove(); }); + function onKey(ev) { if (ev.key === 'Escape') { overlay.remove(); document.removeEventListener('keydown', onKey); } } + document.addEventListener('keydown', onKey); + }); } // ── Test ID → doc page URL mapping ───────────────────────────── @@ -504,6 +528,21 @@ window.ProbeRender = (function () { return '' + label + ''; } + var EXPECTED_TRUNCATE = 20; + function expectedPill(bg, fullLabel) { + var visible = fullLabel.replace(/\u200B/g, ''); + if (visible.length <= EXPECTED_TRUNCATE) { + return '' + fullLabel + ''; + } + var count = 0, cutIdx = 0; + for (var ci = 0; ci < fullLabel.length && count < EXPECTED_TRUNCATE - 3; ci++) { + if (fullLabel[ci] !== '\u200B') count++; + cutIdx = ci + 1; + } + var label = fullLabel.substring(0, cutIdx) + '\u2026'; + return '' + label + ''; + } + function verdictBg(v) { return v === 'Pass' ? PASS_BG : v === 'Warn' ? WARN_BG : FAIL_BG; } @@ -777,7 +816,7 @@ window.ProbeRender = (function () { var isUnscored = first.scored === false; var opacity = isUnscored ? 'opacity:0.55;' : ''; var sepCls = i === unscoredStart ? ' probe-unscored-sep' : ''; - t += '' + pill(EXPECT_BG, first.expected.replace(/ or close/g, '/\u2715').replace(/\//g, '/\u200B')) + ''; + t += '' + expectedPill(EXPECT_BG, first.expected.replace(/ or close/g, '/\u2715').replace(/\//g, '/\u200B')) + ''; }); t += '';