Add event listening for embedded item deletion
This commit is contained in:
parent
df1e768cc2
commit
dcdc1b7764
2 changed files with 32 additions and 7 deletions
|
|
@ -1,24 +1,47 @@
|
|||
export class PlayerActor {
|
||||
/** @this {Actor} */
|
||||
static async genericEmbeddedUpdate($event) {
|
||||
let data = $event.target.dataset;
|
||||
let data = $event.delegateTarget.dataset;
|
||||
let item = await fromUuid(data.embeddedId);
|
||||
item?.update({ [data.embeddedUpdate]: $event.target.value });
|
||||
this.sheet.render();
|
||||
};
|
||||
|
||||
/** @this {Actor} */
|
||||
static async genericEmbeddedDelete($event) {
|
||||
let data = $event.target.dataset;
|
||||
let itemID = data.embeddedId;
|
||||
if (!itemID) {
|
||||
// TODO: Throw a notification here
|
||||
let data = $event.delegateTarget.dataset;
|
||||
let item = await fromUuid(data.embeddedId);
|
||||
|
||||
if (!item) {
|
||||
ui.notifications.error(
|
||||
`dotdungeon.notification.error.item-not-found`,
|
||||
{ console: false }
|
||||
);
|
||||
return;
|
||||
};
|
||||
// TODO: Ask for confirmation before deleting
|
||||
|
||||
Dialog.confirm({
|
||||
title: game.i18n.format(
|
||||
`dotdungeon.dialogs.${item.type}.delete.title`,
|
||||
item
|
||||
),
|
||||
content: game.i18n.format(
|
||||
`dotdungeon.dialogs.${item.type}.delete.content`,
|
||||
item
|
||||
),
|
||||
yes: () => {
|
||||
item.delete();
|
||||
},
|
||||
defaultYes: false,
|
||||
});
|
||||
};
|
||||
|
||||
/** @this {Actor} */
|
||||
static createCustomSpell() {
|
||||
this.createEmbeddedDocuments(
|
||||
"Item",
|
||||
[{ type: `spell`, name: `New Spell` }]
|
||||
);
|
||||
this.sheet.render();
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -21,7 +21,9 @@ export class PlayerSheet extends GenericActorSheet {
|
|||
|
||||
html.find(`.add-spell`).on(`click`, this.actor.createCustomSpell.bind(this.actor));
|
||||
html.find(`[data-embedded-update]`)
|
||||
.on(`change`, this.actor.updateEmbeddedDocument.bind(this.actor));
|
||||
.on(`change`, this.actor.genericEmbeddedUpdate.bind(this.actor));
|
||||
html.find(`[data-embedded-delete]`)
|
||||
.on(`click`, this.actor.genericEmbeddedDelete.bind(this.actor));
|
||||
};
|
||||
|
||||
async getData() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue