<button id="review">Review Comment</button>
<dialog>
<p>Either approve or deny this comment.</p>
<button id="reject">Reject</button>
<button id="approve">Approve</button>
</dialog>
<span id="message" hidden></span>
body {
display: grid;
gap: 1rem;
place-items: center;
min-height: 100vh;
}
[hidden] {
display: none;
}
button {
padding: .25rem .5rem;
}
div, dialog {
padding: 3rem;
text-align: center;
}
* {
border-radius: 4px;
}
span {
display: inline-block;
background: green;
color: white;
padding: 1rem;
font-size: 5rem;
}
const dialog = document.querySelector('dialog');
const message = document.getElementById('message');
const reviewButton = document.getElementById('review');
const rejectButton = document.getElementById('reject');
const approveButton = document.getElementById('approve');
const { promise, resolve, reject } = Promise.withResolvers();
reviewButton.addEventListener('click', () => dialog.show());
rejectButton.addEventListener('click', reject);
approveButton.addEventListener('click', resolve);
promise
.then(() => {
message.innerHTML = "You approved it!";
message.style.background = "green";
message.hidden = false;
})
.catch(() => {
message.innerHTML = "You rejected it.";
message.style.background = "red";
message.hidden = false;
}).finally(() => {
reviewButton.remove();
dialog.close();
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.