document.querySelector('form').addEventListener('submit', async e => {
e.preventDefault();
+ if (e.target.hasAttribute('data-loading')) {
+ return;
+ }
+ e.target.setAttribute('data-loading', '');
+ document.querySelector('output').style.setProperty('display', 'none');
+
const { num, rpc } = Object.fromEntries(new FormData(e.target));
const response = await fetch(rpc, {
method: 'POST',
}
const { header, rlp, hash } = calculate(block);
- document.querySelector('output').style.setProperty('display', 'unset');
document.querySelector('#out-header').textContent = `[\n ${header.join(',\n ')}\n]`;
document.querySelector('#out-rlp').textContent = rlp;
document.querySelector('#out-hash').textContent = hash;
+ document.querySelector('output').style.setProperty('display', 'unset');
+
+ e.target.removeAttribute('data-loading');
});
</script>
</body>
& * {
font-size: 1rem;
}
+
+ &[data-loading] button {
+ cursor: not-allowed;
+ filter: unset;
+ background-color: hsl(216deg 15% 80%);
+ }
+
+ &[data-loading]::after {
+ content: 'Loading...';
+ content: '⏳' / 'Loading...';
+ }
}
label {