forked from open-webui/open-webui
Merge pull request #57 from ollama-webui/dev
feat: copy code block enhancement
This commit is contained in:
commit
e36e83697b
1 changed files with 37 additions and 7 deletions
|
@ -108,14 +108,44 @@
|
|||
// only add button if browser supports Clipboard API
|
||||
|
||||
if (navigator.clipboard && block.childNodes.length < 2) {
|
||||
let code = block.querySelector('code');
|
||||
code.style.borderTopRightRadius = 0;
|
||||
code.style.borderTopLeftRadius = 0;
|
||||
|
||||
let topBarDiv = document.createElement('div');
|
||||
topBarDiv.style.backgroundColor = '#343541';
|
||||
topBarDiv.style.overflowX = 'auto';
|
||||
topBarDiv.style.display = 'flex';
|
||||
topBarDiv.style.justifyContent = 'space-between';
|
||||
topBarDiv.style.padding = '0 1rem';
|
||||
topBarDiv.style.paddingTop = '4px';
|
||||
topBarDiv.style.borderTopRightRadius = '8px';
|
||||
topBarDiv.style.borderTopLeftRadius = '8px';
|
||||
|
||||
let langDiv = document.createElement('div');
|
||||
langDiv.textContent = code?.className.split(' ')[0].slice(9);
|
||||
langDiv.style.color = 'white';
|
||||
langDiv.style.margin = '4px';
|
||||
langDiv.style.fontSize = '0.75rem';
|
||||
|
||||
let button = document.createElement('button');
|
||||
button.textContent = 'Copy Code';
|
||||
button.style.background = 'none';
|
||||
button.style.fontSize = '0.75rem';
|
||||
button.style.border = 'none';
|
||||
button.style.margin = '4px';
|
||||
button.style.cursor = 'pointer';
|
||||
button.style.color = '#ddd';
|
||||
button.addEventListener('click', () => copyCode(block, button));
|
||||
|
||||
button.innerText = 'Copy Code';
|
||||
block.appendChild(button);
|
||||
topBarDiv.appendChild(langDiv);
|
||||
topBarDiv.appendChild(button);
|
||||
|
||||
button.addEventListener('click', async () => {
|
||||
await copyCode(block, button);
|
||||
});
|
||||
block.prepend(topBarDiv);
|
||||
|
||||
// button.addEventListener('click', async () => {
|
||||
// await copyCode(block, button);
|
||||
// });
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -126,11 +156,11 @@
|
|||
await navigator.clipboard.writeText(text);
|
||||
|
||||
// visual feedback that task is completed
|
||||
button.innerText = 'Code Copied';
|
||||
button.innerText = 'Copied!';
|
||||
|
||||
setTimeout(() => {
|
||||
button.innerText = 'Copy Code';
|
||||
}, 700);
|
||||
}, 1000);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue