Files
aowow/setup/tools/filegen/templates/global.js/clicktocopy.js
Sarjuuk 60eb816002 Quickfacts
* where applicable:
   - show typeId
   - show english name if currently localized
   - show percentage attained by synced profiles
 * fixed some typos
2025-10-03 17:49:50 +02:00

123 lines
3.1 KiB
JavaScript

$WH.clickToCopy = function (el, textOrFn, opt)
{
opt = opt || {};
$WH.aE(el, 'click', $WH.clickToCopy.copy.bind(null, el, textOrFn, opt));
// $WH.preventSelectStart(el);
el.classList.add('click-to-copy');
if (opt.modifyTooltip)
{
el._fixTooltip = function (e) {
return e + '<br>' + $WH.ce('span', { className: 'q2', innerHTML: $WH.clickToCopy.getTooltip(false, opt) }).outerHTML;
};
opt.overrideOtherTooltips = false;
}
// aowow - fitted to old system
// $WH.Tooltips.attach(
$WH.Tooltip.simple(
el,
$WH.clickToCopy.getTooltip.bind(null, false, opt),
undefined,
// {
/* byCursor: ! */ opt.attachToElement,
// stopPropagation: opt.overrideOtherTooltips
// }
);
};
$WH.clickToCopy.copy = function (el, textOrFn, opt, ev)
{
ev.preventDefault();
ev.stopPropagation();
if (textOrFn === undefined)
{
if (!el.childNodes[0] || !el.childNodes[0].textContent)
{
let text = 'Could not find text to copy.';
// $WH.error(text, el);
if (opt.attachToElement)
$WH.Tooltip.show(el, text, 'q10');
else
$WH.Tooltip.showAtCursor(ev, text, 'q10');
return;
}
textOrFn = el.childNodes[0].textContent;
}
else if (typeof textOrFn === 'function')
textOrFn = textOrFn();
$WH.copyToClipboard(textOrFn);
if (opt.attachToElement)
$WH.Tooltip.show(el, $WH.clickToCopy.getTooltip(true, opt));
else
$WH.Tooltip.showAtCursor(ev, $WH.clickToCopy.getTooltip(true, opt));
};
$WH.clickToCopy.getTooltip = function (clicked, opt)
{
let txt = '';
let attr = undefined;
if (clicked)
{
txt = ' ' + LANG.copied;
attr = { className: 'q1 icon-tick' };
}
else
txt = LANG.clickToCopy;
let tt = $WH.ce('div', attr, $WH.ct(txt));
if (opt.prefix)
{
tt.style.marginTop = '10px';
let prefix = typeof opt.prefix === 'function' ? opt.prefix() : opt.prefix;
return prefix + tt.outerHTML;
}
return tt.outerHTML;
};
$WH.copyToClipboard = function (text, t)
{
if (!$WH.copyToClipboard.hiddenInput)
{
$WH.copyToClipboard.hiddenInput = $WH.ce('textarea', { className: 'hidden-element' });
$WH.ae(document.body, $WH.copyToClipboard.hiddenInput);
}
$WH.copyToClipboard.hiddenInput.value = text;
let isEmpty = $WH.copyToClipboard.hiddenInput.value === '';
if (isEmpty)
$WH.copyToClipboard.hiddenInput.value = LANG.nothingToCopy_tip;
$WH.copyToClipboard.hiddenInput.focus();
$WH.copyToClipboard.hiddenInput.select();
if (!document.execCommand('copy'))
prompt(null, text);
$WH.copyToClipboard.hiddenInput.blur();
if (t)
{
if (isEmpty)
$WH.Tooltips.showFadingTooltipAtCursor(LANG.nothingToCopy_tip, t, 'q10');
else
{
let e = $WH.ce('span', { className: 'q1 icon-tick' }, $WH.ct(' ' + LANG.copied));
$WH.Tooltips.showFadingTooltipAtCursor(e.outerHTML, t);
}
}
};