mcp-feedback-enhanced/tests/helpers/manual_tooltip_test.html
2025-06-14 11:38:14 +08:00

289 lines
9.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tooltip 方向測試</title>
<style>
:root {
--bg-primary: #1e1e1e;
--bg-secondary: #2d2d30;
--text-primary: #cccccc;
--text-secondary: #969696;
--accent-color: #007acc;
--border-color: #464647;
--transition-fast: 0.2s;
}
body {
background: var(--bg-primary);
color: var(--text-primary);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 0;
padding: 20px;
}
.test-container {
max-width: 800px;
margin: 0 auto;
}
.test-section {
margin-bottom: 40px;
padding: 20px;
background: var(--bg-secondary);
border-radius: 8px;
border: 1px solid var(--border-color);
}
.test-header {
background: var(--bg-secondary);
padding: 12px 20px;
border-radius: 8px;
margin-bottom: 20px;
display: flex;
justify-content: center;
align-items: center;
}
/* 會話ID顯示樣式 */
.session-id-display {
font-family: 'Consolas', 'Monaco', monospace;
color: var(--accent-color);
cursor: pointer;
padding: 2px 6px;
border-radius: 4px;
background: rgba(0, 122, 204, 0.1);
border: 1px solid transparent;
transition: all var(--transition-fast) ease;
position: relative;
font-weight: 500;
display: inline-block;
}
.session-id-display:hover {
background: rgba(0, 122, 204, 0.2);
border-color: var(--accent-color);
transform: scale(1.02);
}
.session-id-display:active {
transform: scale(0.98);
}
/* 會話ID tooltip - 向下顯示 */
.session-id-display::after {
content: attr(data-full-id);
position: absolute;
top: 100%;
left: 50%;
transform: translateX(-50%);
background: var(--bg-primary);
color: var(--text-primary);
padding: 6px 10px;
border-radius: 6px;
font-size: 11px;
white-space: nowrap;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
border: 1px solid var(--border-color);
opacity: 0;
visibility: hidden;
transition: all var(--transition-fast) ease;
z-index: 1000;
margin-top: 4px;
}
.session-id-display:hover::after {
opacity: 1;
visibility: visible;
}
/* 對比向上顯示的tooltip */
.session-id-display-up {
font-family: 'Consolas', 'Monaco', monospace;
color: var(--accent-color);
cursor: pointer;
padding: 2px 6px;
border-radius: 4px;
background: rgba(0, 122, 204, 0.1);
border: 1px solid transparent;
transition: all var(--transition-fast) ease;
position: relative;
font-weight: 500;
display: inline-block;
}
.session-id-display-up:hover {
background: rgba(0, 122, 204, 0.2);
border-color: var(--accent-color);
transform: scale(1.02);
}
.session-id-display-up::after {
content: attr(data-full-id);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
background: var(--bg-primary);
color: var(--text-primary);
padding: 6px 10px;
border-radius: 6px;
font-size: 11px;
white-space: nowrap;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
border: 1px solid var(--border-color);
opacity: 0;
visibility: hidden;
transition: all var(--transition-fast) ease;
z-index: 1000;
margin-bottom: 4px;
}
.session-id-display-up:hover::after {
opacity: 1;
visibility: visible;
}
.description {
margin-bottom: 15px;
color: var(--text-secondary);
font-size: 14px;
}
.test-item {
margin: 20px 0;
text-align: center;
}
.test-label {
display: block;
margin-bottom: 10px;
font-weight: 500;
}
.status-message {
margin-top: 20px;
padding: 10px;
border-radius: 4px;
background: rgba(76, 175, 80, 0.2);
color: #4caf50;
border: 1px solid #4caf50;
text-align: center;
}
</style>
</head>
<body>
<div class="test-container">
<h1>Tooltip 方向測試</h1>
<!-- 頂部測試 - 模擬實際使用場景 -->
<div class="test-header">
<span>📋 當前會話:
<span class="session-id-display"
data-full-id="6a674dda-1b98-4f86-824b-afdfd8c581f2"
title="點擊複製完整會話ID">6a674dda...</span>
</span>
</div>
<div class="test-section">
<h3>測試說明</h3>
<div class="description">
以下是不同位置的tooltip顯示測試。將滑鼠懸停在會話ID上查看tooltip的顯示方向。
</div>
<div class="test-item">
<span class="test-label">✅ 新版本 - 向下顯示 (推薦)</span>
<span class="session-id-display"
data-full-id="6a674dda-1b98-4f86-824b-afdfd8c581f2">6a674dda...</span>
</div>
<div class="test-item">
<span class="test-label">❌ 舊版本 - 向上顯示 (會超出畫面)</span>
<span class="session-id-display-up"
data-full-id="6a674dda-1b98-4f86-824b-afdfd8c581f2">6a674dda...</span>
</div>
<div class="status-message">
✅ 新版本的tooltip向下顯示確保在頁面頂部也能完整看到完整的會話ID
</div>
</div>
<div class="test-section">
<h3>實際應用場景</h3>
<div class="description">
在實際應用中會話ID位於頁面頂部的連線狀態欄中。向下顯示tooltip可以確保用戶始終能看到完整的會話ID而不會被瀏覽器視窗邊界截斷。
</div>
<div style="text-align: center; margin-top: 20px;">
<span style="color: var(--text-secondary);">
💡 提示將滑鼠懸停在上方頂部區域的會話ID上測試實際效果
</span>
</div>
</div>
</div>
<script>
// 添加點擊複製功能
document.addEventListener('DOMContentLoaded', function() {
const sessionIdElements = document.querySelectorAll('.session-id-display, .session-id-display-up');
sessionIdElements.forEach(function(element) {
element.addEventListener('click', function() {
const fullId = this.getAttribute('data-full-id');
if (navigator.clipboard) {
navigator.clipboard.writeText(fullId).then(function() {
showMessage('會話ID已複製到剪貼板: ' + fullId);
}).catch(function(err) {
console.error('複製失敗:', err);
fallbackCopy(fullId);
});
} else {
fallbackCopy(fullId);
}
});
});
});
function fallbackCopy(text) {
const textArea = document.createElement('textarea');
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
showMessage('會話ID已複製到剪貼板: ' + text);
}
function showMessage(message) {
// 創建臨時消息提示
const messageEl = document.createElement('div');
messageEl.textContent = message;
messageEl.style.cssText = `
position: fixed;
top: 20px;
right: 20px;
background: rgba(76, 175, 80, 0.9);
color: white;
padding: 12px 20px;
border-radius: 6px;
z-index: 10000;
font-size: 14px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
`;
document.body.appendChild(messageEl);
setTimeout(function() {
messageEl.style.opacity = '0';
messageEl.style.transition = 'opacity 0.3s ease';
setTimeout(function() {
document.body.removeChild(messageEl);
}, 300);
}, 2000);
}
</script>
</body>
</html>