mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.2 KiB
32 lines
1.2 KiB
import {showTemporaryTooltip} from '../modules/tippy.ts'; |
|
import {toAbsoluteUrl} from '../utils.ts'; |
|
import {clippie} from 'clippie'; |
|
|
|
const {copy_success, copy_error} = window.config.i18n; |
|
|
|
// Enable clipboard copy from HTML attributes. These properties are supported: |
|
// - data-clipboard-text: Direct text to copy |
|
// - data-clipboard-target: Holds a selector for a <input> or <textarea> whose content is copied |
|
// - data-clipboard-text-type: When set to 'url' will convert relative to absolute urls |
|
export function initGlobalCopyToClipboardListener() { |
|
document.addEventListener('click', async (e) => { |
|
const target = (e.target as HTMLElement).closest('[data-clipboard-text], [data-clipboard-target]'); |
|
if (!target) return; |
|
|
|
e.preventDefault(); |
|
|
|
let text = target.getAttribute('data-clipboard-text'); |
|
if (!text) { |
|
text = document.querySelector<HTMLInputElement>(target.getAttribute('data-clipboard-target')!)?.value ?? null; |
|
} |
|
|
|
if (text && target.getAttribute('data-clipboard-text-type') === 'url') { |
|
text = toAbsoluteUrl(text); |
|
} |
|
|
|
if (text) { |
|
const success = await clippie(text); |
|
showTemporaryTooltip(target, success ? copy_success : copy_error); |
|
} |
|
}); |
|
}
|
|
|