I am trying to return true or false from my custom popup class depending on whether the user clicks 'delete' or 'cancel'.
I've created the popup class and an init method to show the popup. The init method is just a template string to style the popup and add the buttons. I created a getResult() method and added some click event listeners to the cancel and delete buttons. In my app.js file, I instantiated a popup class and called the getResult() method and attempted to store the return value in variable 'decision'.
class Popup {
constructor(title, message){
this.title = title;
this.message = message;
this.container = document.querySelector('body');
}
init(){
const popup = `
<div class="popup-wrapper">
<div class="popup bg-white p-1">
<div class="popup-close">X</div>
<div class="popup-content ">
<h2 class="">${this.title}</h2>
<p class="p-1 my-2">${this.message}</p>
<div class="dialogue_buttons my-1">
<button class="btn popup-no" onClick="">Cancel</button>
<button class="btn btn-danger my-1 popup-yes" onClick="">Start Delete</button>
</div>
</div>
</div>
</div>
`;
this.container.innerHTML += popup;
}
getResult(){
document.querySelector('.popup-no').addEventListener('click', () => {
console.log('no');
return false;
})
document.querySelector('.popup-yes').addEventListener('click', () => {
console.log('yes');
return true;
})
}
}
export default Popup
Below is my app.js file where i instatiate the popup.
experienceTable && experienceTable.addEventListener('click', async e => {
const id = e.target.parentElement.parentElement.getAttribute('data-id');
if (e.target.tagName === 'BUTTON') {
console.log(id);
const confirmDelete = new Popup(
'Delete',
'This will permanently delete this experience record.',
()=>db.deleteExperience(id),
id
);
confirmDelete.init();
const decision = await confirmDelete.getResult();
console.log(decision);
}
})
In my app.js file, I instantiated a new Popup and called the init method. The popup shows correctly in my browser. When I click cancel, it console logs "no" as expected. When I click Delete it console logs "yes" as expected. However, when i console log the variable decision, i get nothing. i expect decision to be true or false depending on which button the user clicked.