71 lines
1.5 KiB
TypeScript
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();
|
|
}
|
|
}
|