${esc(data.jobTitle)}
| ${esc(data.mobileDisplay)} | |
| ${esc(data.mobileDisplay)} | |
| ${esc(data.email)} | |
| ${esc(websiteLabel(data.website))} | |
| ${esc(data.addressLabel)} ${esc(data.addressText)} |
|
|
This email and any attachments may contain confidential information. If you are not the intended recipient, please delete it and notify the sender.
`;
}function collect() {
const data = {};
ids.forEach(id => data[id] = getEl(id).value.trim());
return data;
}function render() {
const data = collect();
const html = signatureHtml(data);
getEl('signaturePreview').innerHTML = html;
getEl('htmlOutput').value = html;
}async function copyText(text, message) {
try {
await navigator.clipboard.writeText(text);
statusEl.textContent = message;
} catch (err) {
statusEl.textContent = 'Copy failed. Please copy manually.';
}
}async function copyPreview() {
const preview = getEl('signaturePreview');
const html = getEl('htmlOutput').value;
try {
const item = new ClipboardItem({
'text/html': new Blob([html], { type: 'text/html' }),
'text/plain': new Blob([preview.innerText], { type: 'text/plain' })
});
await navigator.clipboard.write([item]);
statusEl.textContent = 'Preview copied. Paste it into Outlook signature settings.';
} catch (err) {
copyText(html, 'HTML copied instead. Paste into your internal process or HTML-capable editor.');
}
}ids.forEach(id => getEl(id).addEventListener('input', render));
getEl('copyHtmlBtn').addEventListener('click', () => copyText(getEl('htmlOutput').value, 'HTML copied to clipboard.'));
getEl('copyPreviewBtn').addEventListener('click', copyPreview);
getEl('resetBtn').addEventListener('click', () => {
ids.forEach(id => getEl(id).value = defaults[id]);
render();
statusEl.textContent = 'Fields reset.';
});render();