Optimize copy-btn: always provide feedback

This commit is contained in:
Mimi 2020-06-17 01:07:52 +08:00
parent 44ba30e367
commit c7ea1abe64
3 changed files with 3 additions and 13 deletions

View File

@ -356,8 +356,6 @@ codeblock:
# Add copy button on codeblock
copy_button:
enable: false
# Show text copy result.
show_result: false
# Available values: default | flat | mac
style:

View File

@ -17,7 +17,7 @@ hexo.extend.helper.register('next_config', function() {
version : next_version,
exturl : theme.exturl,
sidebar : theme.sidebar,
copycode : theme.codeblock.copy_button,
copycode : theme.codeblock.copy_button.enable,
back2top : theme.back2top,
bookmark : theme.bookmark,
fancybox : theme.fancybox,

View File

@ -70,7 +70,7 @@ NexT.utils = {
span.classList.add(`hljs-${name}`);
});
});
if (!CONFIG.copycode.enable) return;
if (!CONFIG.copycode) return;
element.insertAdjacentHTML('beforeend', '<div class="copy-btn"><i class="fa fa-clipboard fa-fw"></i></div>');
const button = element.querySelector('.copy-btn');
button.addEventListener('click', event => {
@ -83,21 +83,13 @@ NexT.utils = {
ta.readOnly = true;
ta.value = code;
document.body.append(ta);
const selection = document.getSelection();
const selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false;
ta.select();
ta.setSelectionRange(0, code.length);
ta.readOnly = false;
const result = document.execCommand('copy');
if (CONFIG.copycode.show_result) {
target.querySelector('i').className = result ? 'fa fa-check-circle fa-fw' : 'fa fa-times-circle fa-fw';
}
target.querySelector('i').className = result ? 'fa fa-check-circle fa-fw' : 'fa fa-times-circle fa-fw';
ta.blur(); // For iOS
target.blur();
if (selected) {
selection.removeAllRanges();
selection.addRange(selected);
}
document.body.removeChild(ta);
});
element.addEventListener('mouseleave', () => {