diff options
author | Jimmy Cai <github@jimmycai.com> | 2022-10-29 18:02:24 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-29 18:02:24 +0300 |
commit | 8a597a5c9c861d2bce22a5e06c7667cd9c8e263a (patch) | |
tree | aa4d68efec6db197b9bb22479177aafe6fc4f91c /assets/ts/codeblock.ts | |
parent | d60083e055dad5c5c4c0b07568b3df24df8daad7 (diff) |
Merge branch 'canary' into master (#711)
* refactor(i18n): simplify the structure of the translation file
* chore: prepare repository for v4.0.0-alpha
* chore: modify go.mod to v4
* refactor: migrate theme configuration to TOML
* fix: exampleSite not using correct theme
* feat: add favicon from assets folder
* refactor: drop linear grandient background feature
remove node-vibrant from dependencies
* feat: use Hugo's code block render hook to implement code copy button
Now it can have i18n support
* refactor: delete color.ts
* refactor: delete Emoji support post from example site
* refactor: drop support for `hidden` field in front matter
* feat: upgrade to PhotoSwipe v5
* chore: bump the required hugo version to 0.100.0
* refactor: remove PhotoSwipe from external.yaml
* fix: extra margin in search result
* fix: incorrect markdown heading level in example site
* refactor: remove some usages of `default` in template
No longer needed thanks to Hugo's configuration merge
* fix: one line codeblock style in firefox
closes https://github.com/CaiJimmy/hugo-theme-stack/issues/564
* feat: add style to new codeblock
* feat: i18n support for codeblock copy text
* fix(menu): jitter when closing menu
It's caused by flexbox gap property, which can't animate
* fix(search): long text overflows under the Search icon
closes https://github.com/CaiJimmy/hugo-theme-stack/issues/515
Diffstat (limited to 'assets/ts/codeblock.ts')
-rw-r--r-- | assets/ts/codeblock.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/assets/ts/codeblock.ts b/assets/ts/codeblock.ts new file mode 100644 index 0000000..08c3328 --- /dev/null +++ b/assets/ts/codeblock.ts @@ -0,0 +1,28 @@ +/** + * Copy button for code blocks +*/ +export default () => { + const copyButtons = document.querySelectorAll('.codeblock-copy'); + copyButtons.forEach(button => { + const codeblockID = button.getAttribute('data-id'), + copyText = button.textContent, + copiedText = button.getAttribute('data-copied-text'); + if (!codeblockID) return; + button.addEventListener('click', (e) => { + e.preventDefault(); + const codeblock = document.getElementById(codeblockID) as HTMLElement; + if (!codeblockID) return; + navigator.clipboard.writeText(codeblock.textContent) + .then(() => { + button.textContent = copiedText; + setTimeout(() => { + button.textContent = copyText; + }, 1000); + }) + .catch(err => { + alert(err) + console.log('Something went wrong', err); + }); + }, false); + }); +}
\ No newline at end of file |