added a cancel option to popups (closes #28)

This commit is contained in:
Nathan DECHER
2020-04-08 15:12:50 +02:00
parent edd9d5c15a
commit 5bf5f49f03
2 changed files with 19 additions and 4 deletions
+12 -2
View File
@@ -77,15 +77,20 @@ class Popup {
buttons.forEach(btn => buttonSection.appendChild(btn));
parent.appendChild(outer);
Popup.displayed.push(this);
const code=await Promise.race(buttons.map(btn => new Promise(ok => {
const btnActions=buttons.map(btn => new Promise(ok => {
btn.addEventListener('click', e => {
e.preventDefault();
return ok(btn.dataset.code);
});
})));
}));
const dismissAction=new Promise(ok => this.dismiss=ok);
const code=await Promise.race(btnActions.concat([dismissAction]));
parent.removeChild(outer);
Popup.displayed.splice(Popup.displayed.indexOf(this), 1);
return code;
}
}
@@ -93,4 +98,9 @@ class Popup {
Popup.EM=Symbol('EM');
Popup.STRONG=Symbol('STRONG');
Popup.displayed=[];
Popup.dismiss=arg => {
Popup.displayed.forEach(p => p.dismiss(arg));
};
return module.exports=Popup;