downthemall/windows/manager/removaldlg.ts
2019-08-25 22:30:07 +02:00

71 lines
1.5 KiB
TypeScript

"use strict";
// License: MIT
import ModalDialog from "../../uikit/lib/modal";
import { _, localize } from "../../lib/i18n";
import { Prefs } from "../../lib/prefs";
import { Keys } from "../keys";
import { $ } from "../winutil";
export default class RemovalModalDialog extends ModalDialog {
private readonly text: string;
private readonly pref: string;
private check: HTMLInputElement | null;
constructor(text: string, pref: string) {
super();
this.text = text;
this.pref = `confirmations.${pref}`;
this.check = null;
}
get content() {
const content = $<HTMLTemplateElement>("#removal-template").
content.cloneNode(true) as DocumentFragment;
localize(content);
this.check = content.querySelector(".removal-remember");
$(".removal-text", content).textContent = this.text;
return content;
}
get buttons() {
return [
{
title: _("remove-downloads"),
value: "ok",
default: true,
dismiss: false,
},
{
title: _("cancel"),
value: "cancel",
default: false,
dismiss: true,
}
];
}
async show() {
if (await Prefs.get(this.pref)) {
return "ok";
}
Keys.suppressed = true;
try {
const res = await super.show();
if (this.check && this.check.checked) {
await Prefs.set(this.pref, true);
}
return res;
}
finally {
Keys.suppressed = false;
}
}
shown() {
this.focusDefault();
}
}