Skip to content

Commit bb06125

Browse files
committed
feat: copy to clipboard dialog
1 parent 7249466 commit bb06125

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

src/components/ApiExplorer.astro

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,25 @@ import { Aside, Icon } from '@astrojs/starlight/components'
4242
</style>
4343
4444
<section class="py-12">
45+
<dialog
46+
open
47+
id="copy-dialog"
48+
class="
49+
z-100
50+
bottom-10 fixed
51+
m-auto
52+
rounded-lg
53+
opacity-0
54+
transition-all
55+
duration-500
56+
ease-in-out
57+
"
58+
>
59+
<p class="flex align-baseline">
60+
<Icon name="approve-check-circle" size="24px" class="m-auto" class="mr-2" />
61+
Copied to clipboard
62+
</p>
63+
</dialog>
4564
<h2 id="try-it-now" class="text-center mb-10">Try it now!</h2>
4665

4766
<Aside type="tip" title="Need a hint?">
@@ -171,11 +190,31 @@ import { Aside, Icon } from '@astrojs/starlight/components'
171190

172191
function copyToClipboard(text) {
173192
navigator.clipboard.writeText(text)
174-
.then(() => console.log('Text copied to clipboard'))
193+
.then(() => {
194+
const durationTime = 500
195+
const hiddenDelay = 2000
196+
197+
console.log('Text copied to clipboard')
198+
copyDialog.classList.remove('hidden')
199+
copyDialog.classList.add('block')
200+
setTimeout(() => {
201+
copyDialog.classList.add('opacity-100')
202+
copyDialog.classList.remove('opacity-0')
203+
})
204+
setTimeout(() => {
205+
copyDialog.classList.remove('opacity-100')
206+
copyDialog.classList.add('opacity-0')
207+
setTimeout(() => {
208+
copyDialog.classList.add('hidden')
209+
copyDialog.classList.remove('block')
210+
}, durationTime)
211+
}, hiddenDelay)
212+
})
175213
.catch((err) => console.error('Failed to copy: ', err))
176214
}
177215

178-
let copyToUrlClipboardButton = document.getElementById('copy-url-to-clipboard')
216+
const copyToUrlClipboardButton = document.getElementById('copy-url-to-clipboard')
217+
const copyDialog = document.getElementById('copy-dialog')
179218

180219
copyToUrlClipboardButton.addEventListener('click', function () {
181220
pokeApiPath = pokeapiPathInput.value

0 commit comments

Comments
 (0)