Add a context menu for the material so that it can be edited and deleted (closes #133)

This commit is contained in:
Oliver-Akins 2024-03-25 22:52:33 -06:00
parent c7bafee6b6
commit fe4abd073f
8 changed files with 42 additions and 17 deletions

View file

@ -2,6 +2,7 @@ import { GenericActorSheet } from "../../GenericActorSheet.mjs";
import DOTDUNGEON from "../../../config.mjs";
import { localizer } from "../../../utils/localizer.mjs";
import { modifierToString } from "../../../utils/modifierToString.mjs";
import { GenericContextMenu } from "../../../utils/GenericContextMenu.mjs";
export class PlayerSheetv2 extends GenericActorSheet {
static get defaultOptions() {
@ -47,6 +48,24 @@ export class PlayerSheetv2 extends GenericActorSheet {
this.toggleItemFilter(filter);
this._renderInner();
});
// Make materials be able to be edited/deleted
new GenericContextMenu(html, `.material`, [
{
name: localizer(`dotdungeon.common.edit`),
callback: (html) => {
const data = html[0].dataset;
this.openEmbeddedSheet.bind(this)(data.embeddedId);
},
},
{
name: localizer(`dotdungeon.common.delete`),
callback: (html) => {
const data = html[0].dataset;
this.genericEmbeddedDelete.bind(this)(data.embeddedId);
},
},
]);
};
async getData() {

View file

@ -59,12 +59,19 @@ export class GenericActorSheet extends ActorSheet {
html.find(`[data-embedded-update-on="blur"]`)
.on(`blur`, this.genericEmbeddedUpdate.bind(this));
html.find(`[data-embedded-delete]`)
.on(`click`, this.genericEmbeddedDelete.bind(this));
.on(`click`, ($e) => {
const id = $e.currentTarget.dataset.embeddedDelete;
this.genericEmbeddedDelete.bind(this)(id);
});
html.find(`[data-embedded-create]`)
.on(`click`, this.genericEmbeddedCreate.bind(this));
html.find(`[data-message-type]`)
.on(`click`, this.genericSendToChat.bind(this));
html.find(`[data-embedded-edit]`)
.on(`click`, ($e) => {
const id = $e.currentTarget.dataset.embeddedEdit;
this.openEmbeddedSheet.bind(this)(id);
})
.on(`click`, this.openEmbeddedSheet.bind(this));
html.find(`button[data-increment]`)
.on(`click`, this._incrementValue.bind(this));
@ -129,10 +136,8 @@ export class GenericActorSheet extends ActorSheet {
};
};
async openEmbeddedSheet($event) {
const data = $event.currentTarget.dataset;
let item = await fromUuid(data.embeddedEdit);
console.log(data)
async openEmbeddedSheet(item_id) {
let item = await fromUuid(item_id);
item?.sheet.render(true);
};
@ -186,9 +191,8 @@ export class GenericActorSheet extends ActorSheet {
await item?.update({ [data.embeddedDecrement]: value - 1 });
};
async genericEmbeddedDelete($event) {
let data = $event.currentTarget.dataset;
let item = await fromUuid(data.embeddedId);
async genericEmbeddedDelete(item_uuid) {
let item = await fromUuid(item_uuid);
if (!item) {
ui.notifications.error(

View file

@ -0,0 +1,6 @@
export class GenericContextMenu extends ContextMenu {
constructor(element, selector, menuItems, opts = {}) {
super(element, selector, menuItems, opts);
this.menuItems.forEach(i => i.icon ??= ``);
};
};

View file

@ -85,8 +85,7 @@
data-tooltip="{{dd-i18n 'dotdungeon.common.delete'}}"
data-tooltip-direction="RIGHT"
class="aspect__button--delete"
data-embedded-delete
data-embedded-id="{{item.uuid}}"
data-embedded-delete="{{item.uuid}}"
>
<div aria-hidden="true" class="icon icon--20">
{{{ icons.garbage-bin }}}

View file

@ -1,4 +1,4 @@
<div class="material">
<div class="material" data-embedded-id="{{item.uuid}}">
<label
for="{{meta.idp}}-{{item.uuid}}-quantity-input"
class="material__label"

View file

@ -85,8 +85,7 @@
data-tooltip="{{dd-i18n 'dotdungeon.common.delete'}}"
data-tooltip-direction="RIGHT"
class="pet__button--delete"
data-embedded-delete
data-embedded-id="{{item.uuid}}"
data-embedded-delete="{{item.uuid}}"
>
<div aria-hidden="true" class="icon icon--20">
{{{ icons.garbage-bin }}}

View file

@ -89,8 +89,7 @@
data-tooltip="{{dd-i18n 'dotdungeon.common.delete'}}"
data-tooltip-direction="RIGHT"
class="untyped__button--delete"
data-embedded-delete
data-embedded-id="{{item.uuid}}"
data-embedded-delete="{{item.uuid}}"
>
<div aria-hidden="true" class="icon icon--20">
{{{ icons.garbage-bin }}}

View file

@ -104,8 +104,7 @@
data-tooltip="{{dd-i18n 'dotdungeon.common.delete'}}"
data-tooltip-direction="RIGHT"
class="weapon__button--delete"
data-embedded-delete
data-embedded-id="{{item.uuid}}"
data-embedded-delete="{{item.uuid}}"
>
<div aria-hidden="true" class="icon icon--20">
{{{ icons.garbage-bin }}}