feat: update Dialog implementation to use DialogV2

This commit is contained in:
Alexander Minges 2025-07-13 14:27:46 +02:00
parent 0f464f6081
commit 27f40b1d96
Signed by: Athemis
GPG key ID: 31FBDEF92DDB162B
2 changed files with 34 additions and 32 deletions

View file

@ -463,9 +463,9 @@ export class DS4Actor extends Actor {
async selectAttributeAndTrait() { async selectAttributeAndTrait() {
const attributeIdentifier = "attribute-trait-selection-attribute"; const attributeIdentifier = "attribute-trait-selection-attribute";
const traitIdentifier = "attribute-trait-selection-trait"; const traitIdentifier = "attribute-trait-selection-trait";
return Dialog.prompt({ return foundry.applications.api.DialogV2.prompt({
title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), window: { title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection") },
content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { content: await foundry.applications.handlebars.renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", {
selects: [ selects: [
{ {
label: getGame().i18n.localize("DS4.Attribute"), label: getGame().i18n.localize("DS4.Attribute"),
@ -489,34 +489,36 @@ export class DS4Actor extends Actor {
}, },
], ],
}), }),
label: getGame().i18n.localize("DS4.GenericOkButton"), ok: {
callback: (html) => { label: getGame().i18n.localize("DS4.GenericOkButton"),
const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); callback: (event, button, dialog) => {
if (!isAttribute(selectedAttribute)) { const selectedAttribute = button.form.elements[attributeIdentifier].value;
throw new Error( if (!isAttribute(selectedAttribute)) {
getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { throw new Error(
actualAttribute: selectedAttribute, getGame().i18n.format("DS4.ErrorUnexpectedAttribute", {
expectedTypes: Object.keys(DS4.i18n.attributes) actualAttribute: selectedAttribute,
.map((attribute) => `'${attribute}'`) expectedTypes: Object.keys(DS4.i18n.attributes)
.join(", "), .map((attribute) => `'${attribute}'`)
}), .join(", "),
); }),
} );
const selectedTrait = html.find(`#${traitIdentifier}`).val(); }
if (!isTrait(selectedTrait)) { const selectedTrait = button.form.elements[traitIdentifier].value;
throw new Error( if (!isTrait(selectedTrait)) {
getGame().i18n.format("DS4.ErrorUnexpectedTrait", { throw new Error(
actualTrait: selectedTrait, getGame().i18n.format("DS4.ErrorUnexpectedTrait", {
expectedTypes: Object.keys(DS4.i18n.traits) actualTrait: selectedTrait,
.map((attribute) => `'${attribute}'`) expectedTypes: Object.keys(DS4.i18n.traits)
.join(", "), .map((attribute) => `'${attribute}'`)
}), .join(", "),
); }),
} );
return { }
attribute: selectedAttribute, return {
trait: selectedTrait, attribute: selectedAttribute,
}; trait: selectedTrait,
};
},
}, },
rejectClose: false, rejectClose: false,
}); });

View file

@ -30,7 +30,7 @@ export function enforce(value, message) {
* @returns {Canvas} * @returns {Canvas}
*/ */
export function getCanvas() { export function getCanvas() {
enforce(canvas instanceof Canvas && canvas.ready, getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); enforce(canvas instanceof foundry.canvas.Canvas && canvas.ready, getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized"));
return canvas; return canvas;
} }