-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
application.js
65 lines (54 loc) · 1.73 KB
/
application.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import ClipboardJS from 'clipboard'
(function () {
const btnHtml = [
'<div class="bd-clipboard">',
'<button type="button" class="btn-clipboard" title="Copy to clipboard">',
'<i class="bi bi-clipboard" aria-hidden="true"></i>',
'</button>',
'</div>'].join('')
document.querySelectorAll('div.highlight')
.forEach(element => {
element.insertAdjacentHTML('beforebegin', btnHtml)
})
const clipboard = new ClipboardJS('.btn-clipboard', {
target(trigger) {
return trigger.parentNode.nextElementSibling
}
})
clipboard.on('success', event => {
const icon = event.trigger.querySelector('.bi')
const originalTitle = event.trigger.title
event.clearSelection()
icon.classList.replace('bi-clipboard', 'bi-check2')
event.trigger.title = 'Copied!'
setTimeout(() => {
icon.classList.replace('bi-check2', 'bi-clipboard')
event.trigger.title = originalTitle
}, 2000)
})
clipboard.on('error', () => {
const modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-'
const fallbackMsg = `Press ${modifierKey}C to copy`
const errorElement = document.getElementById('copy-error-callout')
if (!errorElement) {
return
}
errorElement.classList.remove('d-none')
errorElement.insertAdjacentHTML('afterbegin', fallbackMsg)
})
const searchInput = document.getElementById('search')
if (searchInput) {
searchInput.addEventListener('keydown', event => {
if (event.key === 'Enter') {
event.preventDefault()
}
})
}
// Disable empty links in docs
document.querySelectorAll('[href="#"]')
.forEach(link => {
link.addEventListener('click', event => {
event.preventDefault()
})
})
})()