diff options
Diffstat (limited to 'web_src')
-rw-r--r-- | web_src/js/features/clipboard.js | 23 | ||||
-rw-r--r-- | web_src/js/index.js | 23 |
2 files changed, 27 insertions, 19 deletions
diff --git a/web_src/js/features/clipboard.js b/web_src/js/features/clipboard.js new file mode 100644 index 0000000000..bd4a664c7a --- /dev/null +++ b/web_src/js/features/clipboard.js @@ -0,0 +1,23 @@ +export default async function initClipboard() { + const els = document.querySelectorAll('.clipboard'); + if (!els || !els.length) return; + + const { default: ClipboardJS } = await import(/* webpackChunkName: "clipboard" */'clipboard'); + + const clipboard = new ClipboardJS(els); + clipboard.on('success', (e) => { + e.clearSelection(); + + $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); + e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')); + $(`#${e.trigger.getAttribute('id')}`).popup('show'); + e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); + }); + + clipboard.on('error', (e) => { + $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); + e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')); + $(`#${e.trigger.getAttribute('id')}`).popup('show'); + e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); + }); +} diff --git a/web_src/js/index.js b/web_src/js/index.js index 3fa6303c8a..128779c153 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -10,6 +10,7 @@ import './vendor/semanticDropdown.js'; import initContextPopups from './features/contextPopup.js'; import initHighlight from './features/highlight.js'; import initGitGraph from './features/gitGraph.js'; +import initClipboard from './features/clipboard.js'; import ActivityTopAuthors from './components/ActivityTopAuthors.vue'; @@ -2453,24 +2454,6 @@ $(document).ready(async () => { } } - // Clipboard JS - const clipboard = new Clipboard('.clipboard'); - clipboard.on('success', (e) => { - e.clearSelection(); - - $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')); - $(`#${e.trigger.getAttribute('id')}`).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); - }); - - clipboard.on('error', (e) => { - $(`#${e.trigger.getAttribute('id')}`).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')); - $(`#${e.trigger.getAttribute('id')}`).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')); - }); - // Helpers. $('.delete-button').click(showDeletePopup); $('.add-all-button').click(showAddAllPopup); @@ -2579,7 +2562,6 @@ $(document).ready(async () => { initRepoStatusChecker(); initTemplateSearch(); initContextPopups(suburl); - initGitGraph(); // Repo clone url. if ($('#repo-clone-url').length > 0) { @@ -2616,8 +2598,11 @@ $(document).ready(async () => { } }); + // parallel init of lazy-loaded features [hljs] = await Promise.all([ initHighlight(), + initGitGraph(), + initClipboard(), ]); }); |