forked from GitHub-Mirrors/foundry-sw5e
66 lines
2.5 KiB
JavaScript
66 lines
2.5 KiB
JavaScript
/**
|
|
* A Dialog to prompt the user to select from a list of items.
|
|
* @type {Dialog}
|
|
*/
|
|
export default class SelectItemsPrompt extends Dialog {
|
|
constructor(items, dialogData = {}, options = {}) {
|
|
super(dialogData, options);
|
|
this.options.classes = ["sw5e", "dialog", "select-items-prompt", "sheet"];
|
|
|
|
/**
|
|
* Store a reference to the Item entities being used
|
|
* @type {Array<Item5e>}
|
|
*/
|
|
this.items = items;
|
|
}
|
|
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
|
|
// render the item's sheet if its image is clicked
|
|
html.on("click", ".item-image", (event) => {
|
|
const item = this.items.find((feature) => feature.id === event.currentTarget.dataset?.itemId);
|
|
|
|
item?.sheet.render(true);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* A constructor function which displays the AddItemPrompt app for a given Actor and Item set.
|
|
* Returns a Promise which resolves to the dialog FormData once the workflow has been completed.
|
|
* @param {Array<Item5e>} items
|
|
* @param {Object} options
|
|
* @param {string} options.hint - Localized hint to display at the top of the prompt
|
|
* @return {Promise<string[]>} - list of item ids which the user has selected
|
|
*/
|
|
static async create(items, {hint}) {
|
|
// Render the ability usage template
|
|
const html = await renderTemplate("systems/sw5e/templates/apps/select-items-prompt.html", {items, hint});
|
|
|
|
return new Promise((resolve) => {
|
|
const dlg = new this(items, {
|
|
title: game.i18n.localize("SW5E.SelectItemsPromptTitle"),
|
|
content: html,
|
|
buttons: {
|
|
apply: {
|
|
icon: `<i class="fas fa-user-plus"></i>`,
|
|
label: game.i18n.localize("SW5E.Apply"),
|
|
callback: (html) => {
|
|
const fd = new FormDataExtended(html[0].querySelector("form")).toObject();
|
|
const selectedIds = Object.keys(fd).filter((itemId) => fd[itemId]);
|
|
resolve(selectedIds);
|
|
}
|
|
},
|
|
cancel: {
|
|
icon: '<i class="fas fa-forward"></i>',
|
|
label: game.i18n.localize("SW5E.Skip"),
|
|
callback: () => resolve([])
|
|
}
|
|
},
|
|
default: "apply",
|
|
close: () => resolve([])
|
|
});
|
|
dlg.render(true);
|
|
});
|
|
}
|
|
}
|